【发布时间】:2021-02-08 03:59:06
【问题描述】:
所以我正在创建一个小费计算器应用程序,但我正在努力四舍五入到最接近的分;这是我想出的一些随机边缘情况
$1.243 => $1.25
$4.44134242 => $4.45
$5.5675235235 => $5.57
$1.21 => $1.21
$1.2000 => $1.20
$1.20001 => $1.21
本质上,我正在查看百分之一的位置,如果小数点后有任何大于 0 的数字,我会将其四舍五入到最接近的分。以下是我想出的,但有时我会差一分钱
double value = 123.451;
double amount = (int)(value * 100.0) / 100.0;
// Should return 123.46
【问题讨论】:
-
鉴于您对您想要的内容的描述,我不明白为什么 1.243 舍入为 1.24 而不是 1.25。
-
最好使用
java.math.BigDecimal进行货币计算。更多细节在这里stackoverflow.com/a/9959347/2224047 -
在标题中你说“最近的 2 美分”,但问题的其余部分只是讨论四舍五入到下一个美分。实际需求是什么?
-
是的,这是一个错字 $1.243 应该四舍五入到 $1.25(更新),我的意思是小数点后 2 位。从本质上讲,如果您和其他人分摊账单,并且假设您要平分账单,您和您的朋友会给出 1.25 美元,而不是一些“奇怪”的大十进制值。
标签: java rounding currency currency-formatting