好奇为什么
double progress = 5/10;
Run Code Online (Sandbox Code Playgroud)
显示我的变量progress
= 0.0,它应该等于0.5,对吗?
明确定义progress
为
double progress = 0.5;
Run Code Online (Sandbox Code Playgroud)
工作正常,但我需要在数学上不明确地定义它.也许我错过了一个lib或者什么,或者我的大脑.Vis Studio 2012 Win 7 x64.
Tim*_*lds 14
因为你正在进行整数除法.试试吧5.0/10.0
.(或者,5.0/10
或5/10.0
-所述操作数中的至少一个是一个double
.)
编译器不使用=
符号左侧的内容来确定右侧常量表达式的值.它interpets的5
作为整数和10
作为整数,因此/
作为整数除法.
将小数点添加到文字编号时,它被解释为a double
.当在a double
和a之间进行除法时int
,int
将转换为a double
并且将使用"常规"除法.
请注意,(double)(5/10)
这将给你double
0
- 不 double
0.5
.这与上述原因相同:常量表达式整数除法5/10
被解释为没有该表达式外部的任何上下文.
归档时间: |
|
查看次数: |
828 次 |
最近记录: |