gpt4 book ai didi

.net - 为什么 TimeSpan.FromSeconds(double) 四舍五入到毫秒?

转载 作者:行者123 更新时间:2023-12-02 03:38:00 25 4
gpt4 key购买 nike

TimeSpan.FromSeconds 采用 double 值,可以表示低至 100 纳秒的值,但是此方法莫名其妙地将时间四舍五入到整毫秒。

鉴于我刚刚花了半个小时来查明此(已记录!)行为,了解为什么会出现这种情况将使我更容易忍受浪费的时间。

任何人都可以解释为什么要实现这种看似适得其反的行为吗?

TimeSpan.FromSeconds(0.12345678).TotalSeconds
// 0.123
TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond * 0.12345678)).TotalSeconds
// 0.1234567

最佳答案

正如您自己发现的那样,这是一个已记录的功能。 documentation of TimeSpan 中对此进行了描述。 :

Parameters

value Type: System.Double

A number of seconds, accurate to the nearest millisecond.

这样做的原因可能是因为 double 根本不那么准确。在比较 double 时进行一些舍入总是一个好主意,因为它可能只是比您预期的大或小一点点。当您尝试输入整毫秒时,这种行为实际上可能会为您提供一些意想不到的纳秒。我认为这就是他们选择将值四舍五入到整毫秒并丢弃较小数字的原因。

关于.net - 为什么 TimeSpan.FromSeconds(double) 四舍五入到毫秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672359/

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