【问题标题】:Rounding float/decimal to 3 decimal places exactly?精确地将浮点数/小数四舍五入到小数点后 3 位?
【发布时间】:2011-11-11 11:56:56
【问题描述】:

我知道有很多问题在问这个问题,但我已经尝试了很多解决方案,但似乎没有一个完全符合我的需要!

大多数解决方案都有效,但是在我的测试数据中我有 float: 0.08095238095238096

如果我将这个四舍五入到 4,我似乎得到了; 0.081 当我需要 0.0809 而不是最后一个地方时。

对于这种类型的数字,我最好使用浮点数还是双精度数?

谢谢

【问题讨论】:

标签: java math rounding precision


【解决方案1】:

您似乎想要四舍五入到小数点后四位而不是四舍五入。

double d = 0.08095238095238096;
d = (long) (d * 10000) / 10000.0;

d = Math.floor(d * 10000) / 10000.0;

我假设你的意思是你想要 d = 0.0809 而不是 0.809。

也许您正在考虑 3 个有效数字,这是一个更难的问题。

除非你有充分的理由,否则最好使用doubleBigDecimal 而不是float

顺便说一句:清楚地知道自己想要什么是很有用的,否则会更难找到。 ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多