gpt4 book ai didi

c# - C# 中的整数除法舍入(负数)

转载 作者:行者123 更新时间:2023-11-30 14:45:06 26 4
gpt4 key购买 nike

有没有什么方法可以在 C# 中执行整数除法(没有 float 或小数,我需要保持这个非常快)来向下舍入数字?

默认除法只是丢弃分数参数。考虑:

 1 / 2 = 0 // That is correct
-1 / 2 = 0 // ... but I want to get (-1) here!

我的部门将采用正数和负数作为除数。我不需要使用 if,因为分支的成本太高(该操作将在实时游戏引擎中非常频繁地运行)...

最佳答案

除以 2 是一个简单的按位右移。在 @elgonzo(现已删除)提到 C# 右移的属性后,我决定看看它是如何工作的,它似乎完全按照您的意愿行事:

var result = number >> 1;

结果如下:

11 -> 5
10 -> 5
2 -> 1
1 -> 0
-1 -> -1
-2 -> -1
-32 -> -16
-33 -> -17

int.MaxValue 和 MinValue 也有效。

在性能方面,这似乎比目前接受的使用模运算符的答案快两倍。在我的机器上使用一个简单的移位将(相同的)100000000 个随机数相除需要 2.17 秒,而使用模数版本需要 3.1 到 4.0 秒。

分支版本的性能似乎与模版本几乎相同:比简单的右移慢得多。

关于c# - C# 中的整数除法舍入(负数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196178/

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