c++ - C++中双变量/计算的小数点后的数字

标签 c++ double latitude-longitude precision digit

<分区>

Possible Duplicate:
Writing numbers to a file with more precision - C++

在将纬度/经度值存储为 double 时,我总是以包含修剪数字的变量结束 - 例如47.2792 用于 47.279229 和 8.42432 用于 8.424317 - 在变量赋值和执行算术运算期间,使变量保持所有数字而不会丢失的最佳方法是什么 - 例如将 0.01098901098 添加到 47.279229 并将其存储为新变量而没有任何精度损失等-? setprecision 为流处理这个问题,但我还没有找到一种方法来作为它的变量/数学对应物。

最佳答案

double 类型在内部 [通常] 存储为二进制 float 。通常,使用二进制浮点值不能准确表示十进制值,尽管通常可以准确地恢复原始十进制值(正确数量的尾随零除外)。在进行计算时,接近原始值的值会被操纵,从而引入额外的错误。将十进制小数转换为 double、使用这些值进行计算并将它们转换回来的结果将产生接近预期结果的值,但并不准确。

如果您知道要处理的小数位数的最大值,则可以将原始值乘以 10 的适当次幂,然后使用整数算法进行计算。要显示这些值,您只需在适当的位置插入一个小数点。

关于c++ - C++中双变量/计算的小数点后的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696597/

相关文章:

java - 确定物体朝向或远离给定的经纬度点

用于对二维坐标数组进行排序并计算边界框的 C++ 函数

java - Java Integer 和 Double 对象是否有不必要的开销?

VBA:Variant/Double 和 Double 之间的区别

c++ - 如何在 C++ 中的同一函数中使用字符串和 double

latitude-longitude - 经纬度长到分和秒?

python- 有效地将纬度从 ddmm.ssss 转换为度数

c++ - 如何在 C++ 中使用 OpenCV 检测多个对象?

php - 流程经理

c++ - 我可以用正则表达式做到这一点吗?