我有一个奇怪的问题.我试图将方程的结果存储到一个双变量中.
double s = (((100 + 1)*(1/3))/100 + (1/3));
Run Code Online (Sandbox Code Playgroud)
这将返回值0而不是.67(从计算器计算的正确值).这可能发生的原因是什么?
注意:说我可以使s = .67的解决方案不是解决方案,
提前致谢.
以下使用整数(即截断)除法,其结果为零:
1/3
Run Code Online (Sandbox Code Playgroud)
要获得浮点除法,请将任一参数转换为双精度,例如
1.0/3
Run Code Online (Sandbox Code Playgroud)
因此,整体表达式变为:
double s = (((100 + 1)*(1./3))/100 + (1./3));
Run Code Online (Sandbox Code Playgroud)
1.是一样的1.0.表达相同数字的其他方式double是1d和1D.
上面的表达式评估为0.6699999999999999.