一个简单的C#语句出乎意料

1 c# line multiplication division

我有这行代码:

int WStoneCost = PriceMethod.StoneCost / 100 * AP;
Run Code Online (Sandbox Code Playgroud)

虽然PriceMethod.StoneCost等于25且AP等于70.我已经使用断点检查了它,我无法理解为什么在运行此行后我得到零.(WStoneCost等于零)它只是一个错误的符号还是我做错了什么?提前致谢.如何在最后获得正确的双倍?像17. 5

D S*_*ley 9

你正在做整数除法,所以25/1000,不是0.25,因此0 * 700.由于您的结果变量也是一个int不清楚您期望的结果,但您可以重新排序操作以得到非零答案:

int WStoneCost = (PriceMethod.StoneCost * AP)/ 100 ;
Run Code Online (Sandbox Code Playgroud)

它仍然是整数除法,但你的输入将25*70(1,750)除以100,这将给你17.

如果你想要一个浮点小数结果,只需使用100m:

decimal WStoneCost = (PriceMethod.StoneCost * AP)/ 100m ;
Run Code Online (Sandbox Code Playgroud)

由于文字100m是a decimal,编译器将使用浮点十进制除法,这将给你一个decimal结果.

  • 请**从不**建议人们使用`double`进行财务计算.始终使用`decimal`. (3认同)