Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能把钱凑到最接近的一分钱呢?_Java_Rounding_Currency_Currency Formatting - Fatal编程技术网

Java 我怎样才能把钱凑到最接近的一分钱呢?

Java 我怎样才能把钱凑到最接近的一分钱呢?,java,rounding,currency,currency-formatting,Java,Rounding,Currency,Currency Formatting,因此,我正在创建一个小费计算器应用程序,但我正在努力四舍五入到最接近的一分钱;下面是我提出的一些随机边缘案例 $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的数字,我将其四舍五入到最接近的一分。下面是我想到的,但我有时会差一分钱 doubl

因此,我正在创建一个小费计算器应用程序,但我正在努力四舍五入到最接近的一分钱;下面是我提出的一些随机边缘案例

$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;

我不明白为什么1.243比1.25更接近1.24,因为你描述了你想要的。最好使用
java.math.BigDecimal
进行货币计算。标题中有更多细节,你说的是“最接近的2美分”,但问题的其余部分只谈到了取整到下一美分。实际要求是什么?是的,那是一个打字错误$1.243应该四舍五入到$1.25(更新),我是说小数点后两位。从本质上讲,如果你和其他人分摊一张账单,假设你平均分摊,你和你的朋友会给1.25美元,而不是一些“奇怪”的大小数。