【问题标题】:How can I round money to the nearest cent? [closed]我怎样才能将钱四舍五入到最接近的美分? [关闭]
【发布时间】: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


【解决方案1】:

假设您了解浮点数的特性以及它在货币计算方面的缺点,像这样?

double amount = Math.ceil(value * 100.0) / 100.0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多