如何使浮点数最多只有4位小数。 在我的J2ME应用程序中,我有两个字段:unitPrice(4位小数)和数量(3位小数),当我乘以它时,我得到的数字小于我需要的小数:
unitPrice :5.6538
quantity: 5
result: 28.269001
如果只得到4位小数,我该怎么办?一般来说,我需要做什么才能使用具有特定小数位数的浮点数。
答案 0 :(得分:1)
当然,如果您使用的是Java SE,解决方案将是BigDecimal。
您可以按以下程序中的result
初始化所示进行舍入:
import java.math.BigDecimal;
public class Test {
public static void main(String args[]) {
float unitPrice = 5.6538f;
float quantity = 5;
float rawResult = quantity*unitPrice;
System.out.println(rawResult);
float result = Math.round(10000f*rawResult)/10000f;
System.out.println(result);
System.out.println(new BigDecimal(result));
}
}
输出结果为:
28.269001
28.269
28.2689990997314453125
不幸的是,正如使用BigDecimal的最终打印输出所示,result
并不完全是28.269。 28.269在任何二进制分数格式中都不能完全表示。如果小数部分非常重要,这可能会影响未来的计算。
作为替代方案,考虑用整数做所有事情,每种类型的数据都有一个相关的十次幂因子。对于单价,因子将是10,000。对于数量,它将是1000.
对于产品,您希望它为10,000。进行乘法的中间结果将具有10 ^ 7的因子,因此除以1000并舍入为整数。
答案 1 :(得分:0)
在vb6.0中我们可以使用RonudOff()函数进行此操作; 例: unitPrice:5.6538 数量:5
结果:28.269001 然后“RounOff(结果)”将给出28.2690;
我认为他们可能在java中也有类似的功能
感谢