|
|
1
7
假设
这是否真的值得重构是另一回事。将中间计算保持为单独的语句以提高可读性通常更有意义,即使您不需要这些中间结果。当然,拥有有意义的变量名会使 大的 |
|
|
2
4
说真的,不要。代码有什么问题-忽略可能的数学问题 只是 看看代码结构本身? 绝对有
但我真的宁愿别管它! |
|
|
3
4
好吧,首先我会使用更有意义的名称,猜测这是取整数的比率,将其转换为百分比,将该百分比应用于另一个原始值,并返回一个新值,这是截断为整数的结果。
使用Convert和cast的一个区别是Convert将抛出一个越界异常,但casting不会,而casting to in t将导致Int32.MinValue。所以如果
因此,您可以使用强制转换来编写它,而不改变其含义,并利用这样一个事实:在包含int和double的表达式中,int被自动强制转换为double:
现在,C#将赋值的双结果截断为15-16,但它的实现定义了中间产物是否以更高的精度操作。我不认为这会改变可转换为int的范围内的输出,但我不知道,值空间太大,无法进行详尽的测试。所以没有 确切地 函数的目的是做什么,您可以改变的很少,并确保您不会改变输出。
然后你会得到以下计算次数的结果
如果你想要一个完全等价的函数
始终根据自动化测试验证重构。也不要假设计算机所处理的值的行为与高中数学中的数字一样。 |
|
|
4
1
前两行可以组合:
|
|
5
0
|
|
|
6
0
|
|
|
7
0
在@FrustedWithformsdes的答案上有一个变体:
|
|
|
8
0
有几个有趣的观点,似乎没有其他人涉及,所以我将添加到混合。。。
它与公认的答案没有太大的不同,但在某些平台上可以表现得稍好一些(使用整数乘法而不是双乘法)。 |
|
|
9
0
当然这是公正的
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |