Dao*_*ang 23 c# integer-division
请原谅我的编程知识.我知道这是一件简单的事情,但我不明白为什么结果总是为什么.为什么十进制会很好?
int a = 100;
int b = 200;
decimal c = (a / b) * 100;
Run Code Online (Sandbox Code Playgroud)
非常感谢.
Ada*_*son 58
整数除法总是截断余数.这是在数字被分割时完成的,而不是在分配给变量的时候(正如我猜你假设的那样).
decimal c = ((decimal)a / b) * 100;
Run Code Online (Sandbox Code Playgroud)
bra*_*boy 14
值a/b将始终返回0,因为它们是整数.因此,当评估括号内的值时,您在技术上就是这样做的
decimal c = (0) * 100
Run Code Online (Sandbox Code Playgroud)
做得好,
decimal c = ((decimal)a/(decimal)b) * 100
Run Code Online (Sandbox Code Playgroud)
100/200是1/2或0.5.由于您正在使用整数,它会向下舍入为0(零).并且0*100仍为0.括号内的部分始终首先被评估:如果要使其工作,请使用:
decimal c = (a * 100) / b;
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想要一个更精确的值而不是"整数百分比"(即33.333%而不是33%),你应该使用Bragaadeesh的答案.