我有一个奇怪的问题。我正在尝试将方程的结果存储到双变量中。
double s = (((100 + 1)*(1/3))/100 + (1/3));
这将返回一个值 0 而不是 0.67(从计算器计算出的正确值)。为什么会发生这种情况?
注意:说我可以让 s = .67 的解决方案不是解决方案,
提前致谢。
以下使用整数(即截断)除法,其结果为零:
1/3
要获得浮点除法,请将任一参数转换为双精度,例如
1.0/3
因此,整体表达式变为:
double s = (((100 + 1)*(1./3))/100 + (1./3));
1.
是一样的1.0
。表示与 a 相同的数字的其他方式double
是1d
和1D
。
上面的表达式计算为0.6699999999999999
。
编译器将您的数字视为 int 的..
试试这样:
double s = (((100d + 1d)*(1d/3d))/100d + (1d/3d));
现在结果将是:
0.6699999999999999