<分区>
想知道为什么
double progress = 5/10;
表明我的变量 progress
= 0.0 而它应该等于 0.5,对吗?
明确定义 progress
为
double progress = 0.5;
工作正常,但我需要在数学上不明确地定义它。也许我缺少一个库或其他东西,或者我的大脑。 Vis Studio 2012 Win 7 x64。
<分区>
想知道为什么
double progress = 5/10;
表明我的变量 progress
= 0.0 而它应该等于 0.5,对吗?
明确定义 progress
为
double progress = 0.5;
工作正常,但我需要在数学上不明确地定义它。也许我缺少一个库或其他东西,或者我的大脑。 Vis Studio 2012 Win 7 x64。
最佳答案
因为你在做整数除法。请尝试使用 5.0/10.0
。 (或 5.0/10
或 5/10.0
- 至少有一个操作数是 double
。)
编译器不会使用 =
符号左侧的内容来确定右侧常量表达式的值。它将 5
插入为 integer 并将 10
作为 integer 插入,因此 /
作为整数除法。
当您将小数点添加到文字数字时,它被解释为 double
。当在 double
和 int
之间完成除法时,int
将转换为 double
和“常规"将使用除法。
注意 (double)(5/10)
会给你 double
0
- 不是 double
0.5
。这是出于与上述相同的原因:常量表达式整数除法 5/10
的解释不受该表达式外部的任何上下文的影响。
关于c# - 为什么 5/10 = 0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153421/