gpt4 book ai didi

c# - 将 Int32.Maximum+ 数值转换为 int32

转载 作者:太空狗 更新时间:2023-10-29 23:13:21 25 4
gpt4 key购买 nike

我想使用 C# 将一个大于 int32 最大范围的大数字转换为 int32。因此,如果超过最大范围 2147483647,则它将从 -2147483648 重新开始。现在我正在这样做:

long val = 3903086636L;
long rem = val % 2147483648L;
long div = val / 2147483648L;
int result = div % 2 == 0 ? (int)rem - 1 : -2147483648 + (int)rem;

我不确定我这样做是否正确。在 C# 中是否有任何实用函数或快速方法来执行此操作?

最佳答案

如果你没有 checked mode已启用,只需转换它即可按预期处理溢出:

int i = (int)val;

或者,按照 Matthew Watson 的建议,使其独立于编译器设置:

int i = unchecked((int)val);

这不会抛出异常。整数将溢出并从 int.MinValue 开始继续计数。

证明:

long val = (long)int.MaxValue + 1;
int result = (int)val;

Console.WriteLine(result == int.MinValue); // true

关于c# - 将 Int32.Maximum+ 数值转换为 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36397645/

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