gpt4 book ai didi

c# - 如何检查 Double 是否可以转换为 Int32?

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

我有一个 double 值,我想将其转换为 Int32。如何在转换前检查是否可以转换?

有时值未定义,转换为 Int32 会抛出 OverflowException。

我已经尝试过这样测试了:

double value = getSomeValue();
if (value == Double.NAN) {
value =0;
}
int v = Convert.ToInt32(value);

但这并不涵盖所有情况。

最佳答案

也许是这个?

更新:我相信下面的更新解决了边缘情况。我已经针对我能想到的每一种情况进行了测试,根据一种直接尝试 Convert.ToInt32 并捕获异常的方法来验证输出。

static bool TryConvertToInt32(double value, out int result)
{
const double Min = int.MinValue - 0.5;
const double Max = int.MaxValue + 0.5;

// Notes:
// 1. double.IsNaN is needed for exclusion purposes because NaN compares
// false for <, >=, etc. for every value (including itself).
// 2. value < Min is correct because -2147483648.5 rounds to int.MinValue.
// 3. value >= Max is correct because 2147483648.5 rounds to int.MaxValue + 1.
if (double.IsNaN(value) || value < Min || value >= Max)
{
result = 0;
return false;
}

result = Convert.ToInt32(value);
return true;
}

关于c# - 如何检查 Double 是否可以转换为 Int32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939174/

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