Mag*_*agB 8 c# precision numeric type-conversion
我想知道哪种转换对于简单的数学运算更好(关于性能/速度和精度/最少损失)以及它们的不同之处是什么?
例:
double double1 = integer1 / (5 * integer2);
var double2 = integer1 / (5.0 * integer2);
var double3 = integer1 / (5D * integer2);
var double4 = (double) integer1 / (5 * integer2);
var double5 = integer1 / (double) (5 * integer2);
var double6 = integer1 / ((double) 5 * integer2);
var double7 = integer1 / (5 * (double) integer2);
var double8 = Convert.ToDouble(integer1 / (5 * integer2));
var double9 = integer1 / Convert.ToDouble(5 * integer2);
Run Code Online (Sandbox Code Playgroud)
实际上我的问题是关于转换而不是类型本身.
编辑
回答你完全改变的问题:
第一行double double1 = integer1 / (5 * integer2);是整数除法,所以不要这样做.
此行在var double8 = Convert.ToDouble(integer1 / (5 * integer2));将结果转换为double之前进行整数除法,因此也不要这样做.
除此之外,您列出的所有不同方法最终将为Conv.R8示例代码中的每一行调用一次IL指令.
唯一真正的区别是Convert.ToDouble()会调用方法,所以你应该避免这样做.
除了double1和double8将是相同的每一行的结果.
所以你应该选择最简单的方法: var double2 = integer1 / (5.0 * integer2);
在更复杂的情况下,请花时间查看是否存在任何差异.
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |