自动安全地从双精度型转换为十进制型:以下安全吗?

2024-02-22

在 C# 中按以下方式从双精度型转换为十进制是否安全:

int downtimeMinutes = 90;
TimeSpan duration = TimeSpan.FromHours(2d);
decimal calculatedDowntimePercent = duration.TotalMinutes > 0?
    (downtimeMinutes / (decimal)duration.TotalMinutes) * 100.0m : 0.0m;

如果答案是肯定的,那么不用大惊小怪,我只会标记为已接受。


一般来说,double -> decimal转换不安全,因为decimal具有较小的范围。

然而,只要TotalMinutes小于最大值decimal值*那就没问题了。这是真的,因为TimeSpan.MaxValue.TotalMinutes < (double)decimal.MaxValue(我相信TimeSpan uses a long内部。)

So: yes.

*:(79,228,162,514,264,337,593,543,950,335分钟是宇宙年龄的1.1×10^13倍)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动安全地从双精度型转换为十进制型:以下安全吗? 的相关文章

随机推荐