关于 float类型的乘法在复杂小数的情况下出现了一些数值偏差,
========================================= ...
经查看源代码,看到问题是两个float类型的数据相乘,具体代码为:
float f1 = 3.141592;
float f2 = 9.330303;
r42 = f1*f2;//正常为29.312006,异常,输出为26.562006
通过对比不添加数学库和添加数学库可以得到两个相差较大的数字,误差已经有点大了
许老师可以尝试复现一下 王昱顺 发表于 2025-2-9 17:20
经查看源代码,看到问题是两个float类型的数据相乘,具体代码为:
float f1 = 3.141592;
float f2 = 9.33 ...
收到 王昱顺 发表于 2025-2-9 17:20
经查看源代码,看到问题是两个float类型的数据相乘,具体代码为:
float f1 = 3.141592;
float f2 = 9.33 ...
好像C51内部实际使用的是双精度运算,然后转换成单精度输出
页:
1
[2]