C# Float to Double

本文关键字:Double to Float | 更新日期: 2023-09-27 18:09:10

static void Main(string[] args)
{
           double y = 23.12F;
           Console.WriteLine(y);
           Console.Read();
}

为什么y的值显示23.1200008392334而不是23.12

static void Main(string[] args)
    {
        int i = -9; uint j = (uint)i;
        Console.WriteLine(j);
        Console.Read();
    }

j如何显示值4294967287

C# Float to Double

浮点数仅保证对于整数值是精确的;除此之外,它们不能表示所有的数字;23.1200008392334是最接近23.12的,因为IEEE754 的工作方式

如果你想要"典型"处理十进制值…使用decimal代替:

decimal y = 23.12M;

uint -,因为uint没有负值。相反,您是从uint的最大值开始向后跟踪的。如果你不想这样,使用checked:

uint j = checked((uint) i);

checked
{
    uint j = (uint)i;
}

那么它就会在火花中爆炸。有时是好事;有时候坏。默认为unchecked

根据MSDN '这就是double的工作原理'http://social.msdn.microsoft.com/forums/en us/csharpgeneral/thread/1fcf6486 dce - 807 d - 4 - 8时- 7 - fe5268b568d/

我知道这是Java,但非常类似于c#:将float转换为double而不丢失精度