为什么这两个表达式的结果应该不同?在gcc和python中也会发生同样的事情这里发生了什么事有什么办法可以防止呢? 最佳答案 浮点数的精度有限如果将小数字(3)添加到大数字(1e20)中,结果通常与大数字相同这里就是这样,因此(3 + 1e20) - 1e20 = 1e20 - 1e20 = 0 double的精度约为15位小数,floats的精度约为7位小数。