gpt4 book ai didi

c# - 为什么 AddMilliseconds 会舍入 double 参数?

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

DateTime.Now.AddMilliseconds(1.5); // adds 2 milliseconds

他们到底在想什么?如果它不处理分数值,那么创建一个采用 double 值的方法让我感到非常糟糕。他们为什么不通过调用 AddTicks 来实现这一点并正确处理分数?或者至少采用一个 int,以便它对调用者透明?

我猜他们以这种方式实现它一定有充分的理由,但我想不出它可能是什么。谁能提供任何见解?

编辑:只是为了进一步强调这一点:

AddSeconds(1.5); // Adds 1500 milliseconds

最佳答案

这是一种妥协,而不是完全不合理的妥协。传递的参数必须四舍五入以处理 DateTime 的分辨率。四舍五入到刻度(100 纳秒)的精度是一个问题。 Double 没有足够的有效数字来跨越所有可能的日期范围。 10000 年 x 365 x 24 x 3600 x 1000 x 10000 = 3E18,double 只有 15 位有效数字。四舍五入到毫秒没有问题,3E14 只是足够好(几率是多少?)

解决方法很简单,只需使用 AddTicks(1.5 * 10000)。

关于c# - 为什么 AddMilliseconds 会舍入 double 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2690043/

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