相关疑难解决方法(0)

为什么TimeSpan.FromSeconds(double)舍入到毫秒?

TimeSpan.FromSeconds 需要一个双倍,并且可以表示低至100纳秒的值,但是这种方法莫名其妙地将时间四舍五入到整个毫秒.

鉴于我只花了半个小时来确定这个(记录在案的!)行为,知道为什么会出现这种情况会更容易忍受浪费的时间.

任何人都可以建议为什么这种看似适得其反的行为被实施了?

TimeSpan.FromSeconds(0.12345678).TotalSeconds
    // 0.123
TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond * 0.12345678)).TotalSeconds
    // 0.1234567
Run Code Online (Sandbox Code Playgroud)

.net timespan base-class-library

34
推荐指数
3
解决办法
5878
查看次数

TimeSpan FromMilliseconds奇怪的实现?

我最近在.net timespan实现中遇到了一些奇怪的行为.

        TimeSpan test = TimeSpan.FromMilliseconds(0.5);
        double ms = test.TotalMilliseconds; // Returns 0
Run Code Online (Sandbox Code Playgroud)

FromMilliseconds采用double作为参数.但是,似乎内部的值是四舍五入的.

如果我使用5000个滴答(.5毫秒)实例化新的时间跨度,则TotalMilliseconds的值是正确的.

查看反射器中的TimeSpan实现会发现输入实际上已经转换为long.

为什么Microsoft设计FromMilliseconds方法采用double参数而不是long(因为在实现时,double值是无用的)?

.net c# timespan

27
推荐指数
1
解决办法
4242
查看次数

标签 统计

.net ×2

timespan ×2

base-class-library ×1

c# ×1