将float/decimal舍入到3位小数?

Lun*_*nar 1 java math precision rounding

我知道有很多问题需要这个,但我已经尝试了很多解决方案,但似乎没有一个确切地工作我需要它!

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

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

对于这种类型的号码,我最好使用float还是double?

谢谢

Pet*_*rey 7

您似乎想要向下舍入到四位小数而不是四舍五入.

double d = 0.08095238095238096;
d = (long) (d * 10000) / 10000.0;
Run Code Online (Sandbox Code Playgroud)

要么

d = Math.floor(d * 10000) / 10000.0;
Run Code Online (Sandbox Code Playgroud)

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

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

最好使用doubleBigDecimal代替,float除非你有一个很好的理由.

顺便说一句:明确你想要什么是有用的,否则它会更难找到它.;)