小编joa*_*ose的帖子

在C#中转换为'int'时,'const float'值与'float'不同

你们任何人都可以解释为什么会这样吗?

static void Main()
{
    const float xScaleStart = 0.5f;
    const float xScaleStop = 4.0f;
    const float xScaleInterval = 0.1f;
    const float xScaleAmplitude = xScaleStop - xScaleStart;

    const float xScaleSizeC = xScaleAmplitude / xScaleInterval;

    float xScaleSize = xScaleAmplitude / xScaleInterval;

    Console.WriteLine(">const float {0}, (int){1}", xScaleSizeC, (int)xScaleSizeC);

    Console.WriteLine(">      float {0}, (int){1}", xScaleSize, (int)xScaleSize);

    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

输出:

>const float 35, (int)34
>      float 35, (int)35
Run Code Online (Sandbox Code Playgroud)

我知道0.1的二进制表示实际上是0.09999990463256835937,虽然为什么这会发生'const float'而不是'float'?这被认为是编译器错误吗?

为了记录,代码编译成:

private static void Main(string[] args)
{
    float xScaleSize = 35f;
    Console.WriteLine(">const float {0}, (int){1}", …
Run Code Online (Sandbox Code Playgroud)

.net c# compiler-bug

37
推荐指数
1
解决办法
2391
查看次数

标签 统计

.net ×1

c# ×1

compiler-bug ×1