gpt4 book ai didi

c# - 哪种数字类型转换更适合简单的数学运算?

转载 作者:太空狗 更新时间:2023-10-29 18:31:17 25 4
gpt4 key购买 nike

我想知道对于一个简单的数学运算,哪种转换更好(关于性能/速度和精度/损失最少),它们有何不同?

例子:

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);

实际上我的问题是关于转换而不是类型本身。

最佳答案

编辑

回应你完全改变的问题:

第一行 double double1 = integer1/(5 * integer2); 进行整数除法,所以不要这样做。

此外,行 var double8 = Convert.ToDouble(integer1/(5 * integer2)); 在将结果转换为 double 之前进行整数除法,所以也不要这样做。

除此之外,您列出的所有不同方法最终都会为示例代码中的每一行调用一次 IL 指令 Conv.R8

唯一真正的区别是 Convert.ToDouble() 会为此调用方法,因此您应该避免这种情况。

double1double8 外,每一行的结果都相同。

所以你应该选择最简单的:var double2 = integer1/(5.0 * integer2);

在更复杂的情况下,对代码计时以查看是否存在任何差异。

关于c# - 哪种数字类型转换更适合简单的数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com