问题描述
所以我正在创建一个小费计算器应用程序,但我正在努力四舍五入到最接近的美分;这是我想出的一些随机边缘情况
$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
解决方法
假设您了解浮点数的特征以及它在货币计算中的缺点,是这样的吗?
double amount = Math.ceil(value * 100.0) / 100.0;