Java me 如何强制浮点只有四位小数

Java me 如何强制浮点只有四位小数,java-me,floating-point,Java Me,Floating Point,我怎样才能使一个浮点数最多只有4位小数。 在我的J2ME应用程序中,我有两个字段:单价(小数点后4位)和数量(小数点后3位),当我将它们相乘时,我得到的数字的小数位数比我需要的要多: unitPrice :5.6538 quantity: 5 result: 28.269001 我该怎么做才能得到只有4位小数的结果?一般来说,我需要做什么才能使用具有特定小数位数的浮点。在vb6.0中,我们可以使用RonudOff()函数进行此操作; 例子: 售价:5.6538 数量:5 结果:28.2690

我怎样才能使一个浮点数最多只有4位小数。 在我的J2ME应用程序中,我有两个字段:单价(小数点后4位)和数量(小数点后3位),当我将它们相乘时,我得到的数字的小数位数比我需要的要多:

unitPrice :5.6538
quantity: 5

result: 28.269001

我该怎么做才能得到只有4位小数的结果?一般来说,我需要做什么才能使用具有特定小数位数的浮点。

在vb6.0中,我们可以使用RonudOff()函数进行此操作; 例子: 售价:5.6538 数量:5

结果:28.269001 然后“RounOff(result)”将给出28.2690

我认为它们在java中可能也有类似的功能


谢谢

当然,如果您使用的是Java SE,那么解决方案将是BigDecimal

您可以在以下程序中按
结果
初始化所示进行取整:

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的最终打印结果所示,
结果实际上并不完全是28.269。28.269不能以任何二进制分数格式精确表示。如果小数点真的很重要,这可能会影响未来的计算

作为一种选择,考虑在整数中做任何事情,每种类型的数据都具有十因子的关联幂。对于单价,系数为10000。数量是1000


对于产品,您希望它是10000。乘法的中间结果的因子为10^7,因此除以1000并四舍五入为整数。

浮点数和双精度浮点不能以这种方式工作。请阅读。