将int转换为Java中的float而不进行舍入

时间:2019-11-27 15:20:42

标签: java rounding

我有int值40959999。如何将其转换为浮点而不四舍五入为409599,99

float f = 40959999/100.00f的结果将是409600.0

3 个答案:

答案 0 :(得分:0)

使用double而不是float

double d = 40959999/100.00f;

答案 1 :(得分:0)

DoubleFloat具有内在的不准确性,这是无法避免的(有关为什么here的更多信息)。在这种情况下,使用双精度数字可能无法四舍五入,但并非全部。如果您使用的东西永远都不能四舍五入(例如价格),那么应该改用BigDecimal

答案 2 :(得分:0)

按如下所示执行int值。而不是使用float,而是使用BigDecimal

BigInteger b1 = BigInteger.valueOf(40959999); 
int scale = 2;
BigDecimal d1 = new BigDecimal(b1, scale); 
System.out.println(d1);

run:
409599.99