以下程序计算262+261+260+...+21+20.
使用double
类型存储sum
:
double sum = 0;
for (int i = 0; i < 63; i++) {
sum += pow(2.0, i);
// print("i : $i sum : $sum");
}
print(sum);
-你在做什么?
9223372036854776000.0
很明显,答案应该是odd
,但sum
是:9223372036854776000.0
,这是一个even
的数字.
当我将SUM更改为INT数据类型时,它会给出准确的结果:
使用int
类型存储sum
:
int sum = 0;
for (int i = 0; i < 63; i++) {
sum += pow(2.0, i).toInt();
//print("i : $i sum : $sum");
}
print(sum);
-你在做什么?
9223372036854775807
当数据类型为DOUBLE时,为什么求和生成错误的结果?