summaryrefslogtreecommitdiff
path: root/src/util/amount.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/amount.c')
-rw-r--r--src/util/amount.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/util/amount.c b/src/util/amount.c
index 21410c769..edb9dc060 100644
--- a/src/util/amount.c
+++ b/src/util/amount.c
@@ -672,4 +672,25 @@ TALER_amount_divide (struct TALER_Amount *result,
}
+/**
+ * Round the amount to something that can be
+ * transferred on the wire.
+ *
+ * @param[in,out] amount amount to round down
+ * @return #GNUNET_OK on success, #GNUNET_NO if rounding was unnecessary,
+ * #GNUNET_SYSERR if the amount or currency was invalid
+ */
+int
+TALER_amount_round (struct TALER_Amount *amount)
+{
+ uint32_t delta;
+
+ delta = amount->fraction % (TALER_AMOUNT_FRAC_BASE / 100);
+ if (0 == delta)
+ return GNUNET_NO;
+ amount->fraction -= delta;
+ return GNUNET_OK;
+}
+
+
/* end of amount.c */