Python3和C不同的数学除法结果

Emm*_*ias 1 c python

我有一个简单的数字除法.我有这两个数字:

  • 39.654
  • 8.381903173E-8

所以,如果我在C上进行划分:

// ...
float ii = 39.654;
double bb = 8.381903173E-8;
printf("\n%.20f\n", ii/bb);
// ... 
Run Code Online (Sandbox Code Playgroud)

输出是: 473090639.56200009584426879883

但是,如果我在Python3上工作:

39.654/8.381903173E-8
Run Code Online (Sandbox Code Playgroud)

输出是: 473090647.5719557

实际上,如果我使用计算器,那么真正的值就是Python3

我的C代码有什么问题?

谢谢!问候!

DYZ*_*DYZ 9

你必须比较苹果和苹果.在Python中,所有浮点变量都是类型double,因此您应该在C程序中使用相同的数据类型:

double ii = 39.654;
double bb = 8.381903173E-8;
printf("\n%.20f\n", ii/bb);
Run Code Online (Sandbox Code Playgroud)

  • @dodobhoot它将被提升.但它的原始精度(和值)将是"浮动". (4认同)