Math.Ceiling返回double因为double可能存储更大的数字.但是,如果我确定该int类型能够存储结果我应该如何转换?施放是否安全(int) Math.Ceiling(...?
Øyv*_*hen 45
如果你确定你没有超过int的容量,那么它应该是完全安全的
int myInt = (int)Math.Ceiling(...);
Run Code Online (Sandbox Code Playgroud)
如果你不确定界限,你可以选择long而不是int.
Aur*_*kas 10
从C++实践中,我将使用以下内容.即使天花板返回99.99999 ... 8或100.000000 ... 1,也能保证获得正确的结果
var result = (int)(Math.Ceiling(value) + 0.5);
Run Code Online (Sandbox Code Playgroud)
如果你相信它的实现,下面的代码也应该工作
var result = Convert.ToInt32(value);
Run Code Online (Sandbox Code Playgroud)
如果一切都与速度有关,那么用于 Int 输入和输出的 Math.Ceiling 会非常慢。最快的是内联表达式:
var ceilingResult = (value / divisor) + (value % divisor == 0 ? 0 : 1);
Run Code Online (Sandbox Code Playgroud)
从我自己的 1000 万次迭代基准来看,Math.Ceiling 需要大约 2.4 秒。在命名函数内调用此表达式需要约 380 毫秒,而将其作为直接内联表达式需要约 33 毫秒。
如果您希望使用 Math.Floor 进行 Int 输入和输出,则更简单:
var floorResult = (value / divisor);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55674 次 |
| 最近记录: |