为什么5/10 = 0.0?

MDM*_*313 2 c# double

好奇为什么

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/105/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被解释为没有该表达式外部的任何上下文.

  • 甚至只是5.0/10.只要其中一个值是double,整个表达式就会被评估. (8认同)