我试图用完整的python重现一个C++高精度计算,但我得到了一个轻微的差异,我不明白为什么.
Python :
from decimal import *
getcontext().prec = 18
r = 0 + (((Decimal(0.95)-Decimal(1.0))**2)+(Decimal(0.00403)-Decimal(0.00063))**2).sqrt()
# r = Decimal('0.0501154666744709107')
C++:
#include <iostream>
#include <math.h>
int main()
{
double zx2 = 0.95;
double zx1 = 1.0;
double zy2 = 0.00403;
double zy1 = 0.00063;
double r;
r = 0.0 + sqrt((zx2-zx1)*(zx2-zx1)+(zy2-zy1)*(zy2-zy1));
std::cout<<"r = " << r << " ****";
return 0;
}
// r = 0.050115466674470907 ****
在python的末尾出现了1
个,但在c++中没有,为什么?在python中更改精度不会改变任何事情(我已经try 过),因为1
在"舍入"之前.
Python : 0.0501154666744709107
C++ : 0.050115466674470907
编辑: