王昱顺 发表于 2025-2-9 10:34:51

LAOXU 发表于 2025-2-7 07:39
关于 float类型的乘法在复杂小数的情况下出现了一些数值偏差,
========================================= ...

计算例如1.5*2这种是准确的,但是计算例如1.23456*5.67892这种长一些的就有问题了。
使用无mdu库情况下是准确的。
我目前在外面,没法给出有问题的准确数值,稍晚一些我用电脑给出验证截图和实际有问题的数值

王昱顺 发表于 2025-2-9 17:20:20

LAOXU 发表于 2025-2-7 07:39
关于 float类型的乘法在复杂小数的情况下出现了一些数值偏差,
========================================= ...

经查看源代码,看到问题是两个float类型的数据相乘,具体代码为:
float f1 = 3.141592;
float f2 = 9.330303;
r42 = f1*f2;//正常为29.312006,异常,输出为26.562006
通过对比不添加数学库和添加数学库可以得到两个相差较大的数字,误差已经有点大了
许老师可以尝试复现一下

LAOXU 发表于 2025-2-11 09:03:32

王昱顺 发表于 2025-2-9 17:20
经查看源代码,看到问题是两个float类型的数据相乘,具体代码为:
float f1 = 3.141592;
float f2 = 9.33 ...

收到

Ayb_ice 发表于 2025-2-18 14:02:36

王昱顺 发表于 2025-2-9 17:20
经查看源代码,看到问题是两个float类型的数据相乘,具体代码为:
float f1 = 3.141592;
float f2 = 9.33 ...

好像C51内部实际使用的是双精度运算,然后转换成单精度输出
页: 1 [2]
查看完整版本: MDU32D测试, 加速7.47倍,更快的AI8H2K12U-B版本的一些注意事项