【发布时间】:2012-10-03 22:58:16
【问题描述】:
当我尝试这样做时
double test = ((2 / 7) * 100);
它返回 0。
有人知道这是为什么以及如何解决吗?
谢谢
【问题讨论】:
-
因为是整数除法。
-
我见过的最快的一连串答案。请记住,您可以使用“d”来表示双打,例如:
((2d / 7d) * 100)
标签: c#
当我尝试这样做时
double test = ((2 / 7) * 100);
它返回 0。
有人知道这是为什么以及如何解决吗?
谢谢
【问题讨论】:
((2d / 7d) * 100)
标签: c#
2 / 7 是整数除法,将返回 0。试试这个吧
2.0 / 7
(double) 2 / 7
【讨论】:
你在除法整数。
如果您想要非整数结果,则至少一个操作数必须是浮点数或双精度数(或小数)。
您可以通过将.00 添加到任何文字来创建文字。
【讨论】:
您正在除整数,所以2 / 7 已经变成0。试试2.0 / 7.0,你会得到正确的结果。
【讨论】:
它在做整数除法,因为所有的操作数都是整数。
要修复它,请至少将一个操作数更改为双精度数,如下所示:
double test = ((2.0 / 7.0) * 100.0);
【讨论】:
您正在做整数数学运算,只有在得到最终结果时才转换为 double。
2 / 7 = 0
同时
2.0 / 7.0 = 0.285714285714285
用double 值做数学运算:
double test = ((2.0 / 7.0) * 100.0);
【讨论】:
这是因为分裂。两个 int 数相除返回截断任何小数点的 int 数。因此,运算 2/7 的结果将为 0。
应该是这样的:
双重测试 = ((2.0 / 7.0) * 100.0);
【讨论】: