我知道有很多问题需要这个,但我已经尝试了很多解决方案,但似乎没有一个工作正是我需要它!
大多数解决方案都有效,但在我的测试数据中,我有float
:0.08095238095238096
如果我将这个四舍五入到4,我似乎得到了; 0.081
当我需要0.0809
而不是最后一个地方时。{/ p>
对于这种类型的数字,我最好使用float还是double?
由于
答案 0 :(得分:7)
您似乎想要向下舍入到四位小数而不是四舍五入。
double d = 0.08095238095238096;
d = (long) (d * 10000) / 10000.0;
或
d = Math.floor(d * 10000) / 10000.0;
我认为你的意思是你想要d = 0.0809而不是0.809。
也许您正在考虑3个有效数字,这是一个更难的问题。
最好使用double
或BigDecimal
代替float
,除非您有充分的理由。
答案 1 :(得分:0)
您的问题是您的原始号码是错误的。如果您需要0.809
,则需要从0.8095238095238096
开始(而不是0.08095238095238096
)。