将纬度/经度值存储为double
时,我最后会得到包含修剪数字的变量-e.g. 47.2792 for 47.279229和8.42432 for 8.424317-在变量赋值和执行算术运算期间,使变量保持所有数字而不丢失的最佳方法是什么 - 例如。将0.01098901098添加到47.279229并将其存储为新变量而不会出现任何精度损失等.-? setprecision
为流处理这个问题,但我还没有找到一种方法作为变量/数学对应物。
答案 0 :(得分:2)
类型double
在内部[通常]存储为二进制浮点。通常,十进制值不能精确地表示使用二进制浮点值,尽管通常可以精确地恢复原始十进制值(除了正确的尾随零数)。在进行计算时,操纵接近原始值的值,从而引入额外的错误。将小数小数转换为double
,使用这些值进行计算并将其转换回来的结果将产生接近预期结果的值,但不会准确。
如果您知道要处理的小数位数的最大值,则可以将原始值乘以10的合适幂,并使用整数运算进行计算。要显示值,您只需在适当的位置插入小数点。