System.out.println(17.25/0.7);
System.out.println(17.25%0.7);
小数的求模与求比值什么规则?
24.642857142857146
0.45000000000000107
为什么求模之后是这个值?0.45000000000000107

解决方案 »

  1.   

    17.25%0.7  等同于 17.25 - ((int)(17.25/0.7)) * 0.7所以等于0.45,但是由于浮点数运算过程中有精度问题,所以会在后面出现00000000107的问题
      

  2.   

    这主要是机器内部数据和开发语言环境时的精度丢失问题,跟java没关系,c也一样 
      
    计算机里表示数都是用的IEEE754标准   是2进制数    
    c语言的double型在计算机内部表示应为   1位数符,11位阶码,52位位数,总共64位构成构成 
    是一个相当相当精确的数据(并不是完全精确).最大值应该是2的3970次方左右 
      
    当数据从机器传递到开发语言环境时,数据需要从一种格式转化为其它的格式。当进行数据转换时,有可能造成数据精度上的丢失。同样,数据从一种类型转换为另一种类型的过程也会影响程序的性能.