尝试强制转换浮点变量时发生奇怪的C#行为(与Java相比)

时间:2019-02-26 20:14:34

标签: java c#

我有验证码

        int twelve = 12;
        int five = 5;
        float y = (float)twelve / 5;


        var e = (float)((float)twelve / (float)five) == y; // true
        var f = ((float)twelve / (float)five) == y; // false
        var g = ((float)twelve / (float)five) == 2.4; // true
        var h = ((float)twelve / (float)five) == 2.4F; // false
        var i = ((float)12 / (float)5) == 2.4F; // true

我不明白为什么fhfalse

有人可以解释这里到底发生了什么吗?

相同的Java代码似乎更可预测

    int twelve = 12;
    int five = 5;

    float y = (float)twelve / 5;

    boolean e = (float)((float)twelve / (float)five) == y; // true
    boolean f = ((float)twelve / (float)five) == y; // true
    boolean g = ((float)twelve / (float)five) == 2.4; // false
    boolean h = ((float)twelve / (float)five) == 2.4F; // true
    boolean i = ((float)12 / (float)5) == 2.4F; // true

0 个答案:

没有答案