原式为 t = sum / M - (sumx / M) * (sumx / M)
写成 t = 1 / M * SUM - (sumx / M) * (sumx / M)之后算出的结果与原式不同,这是为什么呢?
如果M是整数的话,肯定不一样,因为1/M可能就是0,后面乘法就没用了
1.如果你运算中所有变量的类型都是整型,那么结果也是整型
2.运算是一步一步的,也就是说1/M优先级高,会先算,那么即使你后面的算式中还有double类型,但1/M的结果是整型
3.1/M中,只要M大于1,那么结果为0
4.即使你全部设置成double类型,由于十进制转二进制会存在精度丢失,也可能造成结果不同
5.请确保你计算的每一步都不会超出类型定义的范围(溢出),在这个前提下,先乘,后除,可以尽量减少精度丢失