我想知道是否有人对十进制数有一个很好的解决方案。
我使用 Arduino Mega,并尝试转换小数点后有 6 个数字的浮点数。当我尝试时,我得到 5 个数字正确,但没有得到数字 6。6 数字要么不计算在内,要么显示为 0。我尝试了很多不同的东西,但它最终总是显示 5 个数字正确,但不是 6。
有人对此有解决方案吗?
感谢所有帮助
通常,可以使用浮点数的缩放整数形式来保持准确性。
具体来说,如果这些是来自GPS设备的纬度/纬度值,您可能会对我的NeoGPS感兴趣。 在内部,它使用 32 位整数来维护 10 位有效数字。 如您所发现的,大多数库仅提供 6 或 7 位数字,因为它们使用 float
.
示例 NMEAloc.ino 演示如何打印 32 位整数,就好像它们是浮点值一样。 它只是在正确的位置打印小数点。
NeoGPS 距离和方位角计算也小心翼翼地以保持该精度的方式执行数学运算。 结果在小距离/方位下非常好,这与在朴素计算中使用float
类型的所有其他库不同。
4 字节浮点数可以容纳 6 个有效数字。8 字节双精度可以容纳 15。
您需要使用双精度才能获得所需的精度。
有关 4 字节浮点数的信息