Python C代码的同步生成&Wierd浮点转换
我正在使用SympyV1.8生成一些C代码 我要转换的表达式之一是:Python C代码的同步生成&Wierd浮点转换,python,python-3.x,sympy,Python,Python 3.x,Sympy,我正在使用SympyV1.8生成一些C代码 我要转换的表达式之一是: exp1 = 0.8*sin(sym.pi*x**2) 我正在使用: import sympy as sym x = sym.Symbol('x') exp1 = 0.8*sym.sin(sym.pi*x**2) sym.ccode(exp1) 输出为: '0.80000000000000004*sin(M_PI*pow(x, 2))' 我的问题是:为什么将0.8转换为0.800000000000004?我能纠正这种行为
exp1 = 0.8*sin(sym.pi*x**2)
我正在使用:
import sympy as sym
x = sym.Symbol('x')
exp1 = 0.8*sym.sin(sym.pi*x**2)
sym.ccode(exp1)
输出为:
'0.80000000000000004*sin(M_PI*pow(x, 2))'
我的问题是:为什么将0.8转换为0.800000000000004?我能纠正这种行为吗
致以最诚挚的问候没有什么需要“更正”的,
0.8==0.800000000000004
请看,之所以会出现这种情况,是因为计算机是如何存储十进制值的?