Java 当算术表达式有浮点时,为什么%给出不同的答案?

Java 当算术表达式有浮点时,为什么%给出不同的答案?,java,operators,modular-arithmetic,Java,Operators,Modular Arithmetic,我最近开始学习java,这个问题一直困扰着我 class Example{ public static void main(String args[]){ double d; d=4.1 % 1.1; System.out.println("4.1%1.1 : "+d); d=5.5 % 1.1; System.out.println("5.5%1.1 : "+d); }

我最近开始学习java,这个问题一直困扰着我

    class Example{
        public static void main(String args[]){
        double d;
        d=4.1 % 1.1;
        System.out.println("4.1%1.1 : "+d);

        d=5.5 % 1.1;
        System.out.println("5.5%1.1 : "+d);
        }
    }
上述程序的输出为 4.1%1.1:0.799999994和 5.5%1.1:1.099999996

但是当我们手工计算时,第一个得到0.8,第二个得到0。。。为什么会发生这种情况

%在表达式中使用整数时给出正确答案

    class Example{
        public static void main(String args[]){
        int x;
        x=10%17;
        System.out.println("10%17 : "+x); **//prints 10**
        }
    }

有人能解释一下这里到底发生了什么吗?

你读过吗?
.1
是一个无休止的二进制分数。但是计算机确实使用固定宽度的数字进行计算,因此任何使用
.1
的计算肯定是错误的。模告诉你除法的剩余部分。
4.1/1.1
的其余部分为
0.8
1.1*3=3.3;4.1-3.3=0.8
@反斜杠谢谢你给我看。。我mistyped@TimothyTruckle隐马尔可夫模型。。是这样吗。。我会参考你提供的网页。。感谢您阅读?
.1
是二进制中的一个无穷分数。但是计算机确实使用固定宽度的数字进行计算,因此任何使用
.1
的计算肯定是错误的。模告诉你除法的剩余部分。
4.1/1.1
的其余部分为
0.8
1.1*3=3.3;4.1-3.3=0.8
@反斜杠谢谢你给我看。。我mistyped@TimothyTruckle隐马尔可夫模型。。是这样吗。。我会参考你提供的网页。。谢谢