我在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我怎么还不明白它是如何工作的或者如何添加结果在数组内部。
答案 0 :(得分:0)
没有冒犯意味着你真的必须通过java 101 ... 第一
double array1 = new array1[200];
简直是非法的......我不知道它是如何编译的,更不用说给出相同的结果了。
你正在为一个原语分配一个数组......严重错误.. !!!
第二
new array1[200];
是另一个
你不能拥有
array1[200]
,除非array1
是一个类名(虽然命名不好)
查看一些基本的java tuts然后expiriment .. gud luck ..:)
答案 1 :(得分:0)
精确度采用BigDecimal说法&#34; scale&#34; (setScale)。但是,如果精度为3,为什么不使用long
填充双值* 1000,舍入。