gpt4 book ai didi

c# - 将 double 转换为 decimal 并在需要时将其加帽

转载 作者:行者123 更新时间:2023-11-30 16:22:17 24 4
gpt4 key购买 nike

我有一个 double ,需要将它转换为小数。如果值太大/太小,结果应该是 decimal.MaxValue/decimal.MinValue。执行此操作的最佳方法是什么?

最佳答案

我假设您意识到这是一种有损转换,应该尽可能避免?如果你真的需要它:

private static readonly double MaxDecimalAsDouble = (double) decimal.MaxValue;
private static readonly double MinDecimalAsDouble = (double) decimal.MinValue;

...
public decimal ConvertWithCap(double input)
{
return input >= MaxDecimalAsDouble ? decimal.MaxValue
: input <= MinDecimalAsDouble ? decimal.MinValue
: (decimal) input;
}

通过这种方式,根据 double 值检查上限,然后返回硬编码为十进制值的上限值。这避免了 double 不能准确表示 decimal 的最大/最小值的问题。

(即使在 decimal 的最大尺度下,也可以表示连续的整数 - 但 double 不是这种情况。)

关于c# - 将 double 转换为 decimal 并在需要时将其加帽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12580231/

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