我有两个double
要根据某些条件递增的计数器。计数器将1或0.01递增,其结果归纳在一起的序列号1.00
,1.01
,1.02
等我得到类似的结果1.01999999999
或者1.111111111111
,预期的状况:由于性质double
。
我正在尝试使用BigDecimal,尽管Java Documentation指出了
BigDecimal(double val)
Translates a double into a BigDecimal which is the exact decimal representation of the double's binary floating-point value.
我无法使代码正常工作。
....
if (condition1) {
indexNo = indexNo + 1;
subIndexNo = .00;
} else
if (condition2) {
subIndexNo = subIndexNo + .01;
}
recNo = indexNo + subIndexNo;
BigDecimal record = BigDecimal(double recNo);
来自编译器的错误消息
C:\pathtojava\sync\java\bin>javac ParseWhiData.java
ParseWhiData.java:97: error: '.class' expected
BigDecimal record = BigDecimal(double recNo);
^
ParseWhiData.java:97: error: ';' expected
BigDecimal record = BigDecimal(double recNo);
^
2 errors
访问BigDecimal时我在做什么错?将double转换为Big Demimal的正确语法是什么,最重要的是,它将转换1.019999999999
为1.02
BigDecimal(以及Java中的每个对象)都是通过new
运算符实例化的。
另外,double
由于您已经定义了一个名为的变量,因此请摆脱构造函数中的关键字recNo
。
改变
BigDecimal record = BigDecimal(double recNo);
到
BigDecimal record = new BigDecimal(recNo);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句