单片机中15位浮点变量计算

15 digit floating variable calculation in microcontroller

我想在控制器 (Arduino) 中计算方程

y = -0.0000000104529251928664x^3 + 0.0000928316793270531x^2 - 0.282333029643959x + 297.661280719026

现在系数的十进制值很重要,因为 "x" 以千为单位变化,所以不能忽略立方项。我曾尝试操纵 excel 中的方程式来减少系数,但 R^2 在此过程中丢失了,我想避免这种情况。

Arduino 中可用的最大变量大小为 4 字节。在 google 搜索中,我找不到合适的解决方案。

感谢您的宝贵时间。

-0.0000000104529251928664 ^ (1/3) = - 0.0021864822
0.0000928316793270531 ^ (1/2) = 0.00963491978

公式

y = -0.0000000104529251928664x^3 + 0.0000928316793270531x^2 - 0.282333029643959x + 297.661280719026

可重写:

y = -(0.0021864822 * x)^3 + (0.00963491978 * x)^2 - 0.282333029643959 * x + 297.661280719026

将所有系数四舍五入到小数点后 10 位,我们得到:

y = -(0.0021864822 * x)^3 + (0.00963491978 * x)^2 - 0.2823330296 * x + 297.6612807

但我不了解Arduino,我不确定正确的小数位数是多少,也不知道编译器会接受或拒绝什么。