请教各位 V 友一个 C++关于 string 转 double 精度的问题。

2017-07-15 16:19:11 +08:00
 mhjyzs

stod("-112.0707922"),为什么只能得到-112.071 。怎样才能不丢失精度。

4179 次点击
所在节点    问与答
10 条回复
KaoN
2017-07-15 16:52:54 +08:00
alqaz
2017-07-15 16:56:13 +08:00
自己写一个
mhjyzs
2017-07-15 17:44:30 +08:00
@KaoN 嗯嗯,谢谢,但是还有个问题是但我设置了输出的精度后,发现经过 stod 转换后为什么数据不精确了,之后输出是-112.07079315185546875。
KaoN
2017-07-15 18:33:37 +08:00
@mhjyzs #3 输出的精度需要你自己控制吧
mhjyzs
2017-07-15 20:27:13 +08:00
@KaoN 输出的精度可以控制,我是说转换的时候为啥会转过去有误差?
unavph
2017-07-15 20:29:25 +08:00
浮点数表示机制问题,误差几乎一定存在不可避免。
unavph
2017-07-15 20:39:47 +08:00
你的值是不是有问题,差的有点多,我试了一下是-112.07079219999999964
mhjyzs
2017-07-15 22:21:21 +08:00
@unavph 我使用 stod("-112.0707922"),然后 cout.precision(20)设置成这样,出来就是上面-112.07079315185546875 这个数,和机器有关吗?
unavph
2017-07-15 22:24:26 +08:00
@mhjyzs 再运行一次,截个图吧
unavph
2017-07-15 22:27:07 +08:00
@mhjyzs 复现到了你的结果,两处不同:不用 stod 而用 stof,-112.0707922 打成-122.0707932

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX