Java BigDecimal的正确语法是什么?

dww*_*n66 -3 java bigdecimal

我有两个double计数器,我根据某些标准递增.计数器将1或0.01递增,其结果归纳在一起的序列号1.00,1.01,1.02等,等我得到的结果1.01999999999或者1.111111111111,预期的状况:由于性质double.

我正在尝试使用BigDecimal,尽管Java文档指出

BigDecimal(double val)
           Translates a double into a BigDecimal which is the exact decimal representation of the double's binary floating-point value.
Run Code Online (Sandbox Code Playgroud)

我无法让代码工作.

            ....
if (condition1) {
    indexNo = indexNo + 1;
    subIndexNo = .00;
} else
    if (condition2) {
        subIndexNo = subIndexNo + .01;
    }
recNo = indexNo + subIndexNo;
BigDecimal record = BigDecimal(double recNo);
Run Code Online (Sandbox Code Playgroud)

来自编译器的错误消息

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
Run Code Online (Sandbox Code Playgroud)

访问BigDecimal时我做错了什么?什么是正确的语法,以双转换为大Demimal,最重要的是,将它转1.0199999999991.02

Kon*_*kov 5

BigDecimal(以及Java中的每个对象)都通过new运算符实例化.

另外,double在构造函数中删除关键字,因为您已经定义了一个名为的变量recNo.

更改

BigDecimal record = BigDecimal(double recNo);
Run Code Online (Sandbox Code Playgroud)

BigDecimal record = new BigDecimal(recNo);
Run Code Online (Sandbox Code Playgroud)

  • 多么快速的眼睛:) (2认同)