Q
奇怪的结果在C#
1
A
回答
11
4
1
和2
都被视为整数常量。 int
除以int
的结果是另一个int
,在投射到double
之前。向编译器指示至少有一个常量是后缀为d
或提供小数点的两倍。
例如
double a = 1d/2d;
5
的划分,在整数运算这意味着你将失去精度之前的结果分配给您的double
类型执行。
将其中一个文字升到double
,强制执行浮点数。即写
double a = 1.0/2;
2
尝试这种情况:
双A =(双)1 /(双)2;
Regards,
相关问题
- 1. 奇怪的结果在C
- 2. 奇怪的结果编辑在C++
- 3. 奇怪的结果
- 4. 奇怪的结果()
- 5. 奇怪的结果
- 6. 奇怪的结果
- 7. 奇怪的结果
- 8. 奇怪的结果
- 9. 奇怪的计算结果的Objective-C
- 10. 的Objective-C:奇怪的计算结果
- 11. C++:奇怪的数学结果
- 12. 奇怪的结果与C字符串
- 13. C++:fmodf()&fmod() - 奇怪的结果?
- 14. c#比较操作奇怪的结果
- 15. C switch case REALY奇怪的结果
- 16. 奇怪SUM()结果
- 17. 结果在串奇怪
- 18. 打印奇怪的结果
- 19. 奇怪的输出结果
- 20. Postgres to_tsquery - 奇怪的结果
- 21. gdb的奇怪结果
- 22. timeit的奇怪结果
- 23. 奇怪的array_diff结果
- 24. 范围奇怪的结果
- 25. 奇怪的结果上iOS10
- 26. 奇怪的结果与IF
- 27. 高图的奇怪结果
- 28. 奇怪的sizeof()结果
- 29. 奇怪的Oracle XMLType.getClobVal()结果
- 30. Boost的奇怪结果:: regex
因为1/2的整数除法为零。无关紧要你分配零。 –
您需要了解编译器处理输入的差异和方式! (int)1 /(int)2将得到int的结果! – WhileTrueSleep
这里的故事的寓意是:**对于C#中的大多数表达式,表达式的类型分析独立于它被分配给**的内容。仅仅因为您将其分配给双倍,“1/2”的值不会改变。 (这个规则的例外是lambda,它根据分配的内容改变它们的含义。) –