0

我用 C# 编写了一个程序,这次我必须用 java 编写,当我尝试加减一个简单的数字时,例如:

double array1 = new double array1[200];
double array2 = new double array2[200];
for (int var = 1; var < 200; var++)
        {
            array1[var] = Math.Round(array1[var] + 0.005,3);
            array2[var] = Math.Round(1 - array1[var],3);
        }

输出是这样的:

array1[0]=0.005,array1[1]=0.010,array1[2]=0.015,array1[3]=0.020,array1[4]=0.025 ......
array2[0]=1.000,array2[1]=0.995,array2[2]=0.990,array2[3]=0.985,array2[4]=0.980 ......

当我尝试使用 java 时,我使用了下一个代码:

 double array1 = new double[200];
    double array2 = new double[200];
    for (int var = 1; var < 200; var++)
            {
                array1[var] = (array1[var] + 0.005);
                array2[var] = (1 - array1[var]);
            }

输出是相同的,在 6 之后,由于双精度的不精确,它开始带来不同的结果,我尝试使用 BigDecimal,但我仍然不明白它是如何工作的,或者如何将结果添加到数组中.

4

2 回答 2

0

没有冒犯的意思,但你真的必须通过 java 101... 1st

double array1 = new array1[200];

简直是非法的..我不知道它是如何编译的,更不用说给出相同的结果了..

您正在将一个数组分配给一个原始...严重错误..!!!

第二

new array1[200];

是另一个

你不能有array1[200],除非array1是一个类名(虽然一个名字不好)

查看一些基本的 java tuts,然后到期.. 运气好.. :)

于 2013-09-26T16:02:05.117 回答
0

精度是 BigDecimal 用语“规模”(setScale)。但是精度为 3,为什么不使用longdouble 值 * 1000 填充,四舍五入。

于 2013-09-26T16:42:27.693 回答