spintf格式化double类型怎样保证小数精度准确?

小白的骑士 2021-01-04 03:12:19
比如char a[256]={0x00}; sprintf(a,"%.12f%",13082.8725); 我希望得到的是13082.872500000000 而不是13082.872599999990 请教一下大佬们应该怎么办。
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白的骑士 2021-01-04
  • 打赏
  • 举报
回复
引用 1 楼 赵4老师的回复:
浮点数格式 http://bbs.csdn.net/topics/390676437
好的,谢谢您了,我看看啊
小白的骑士 2021-01-04
  • 打赏
  • 举报
回复
引用 3 楼 Chgooo的回复:
浮点数精度限制 13082.8725存到内存中时已经是13082.872599999990,所以错不在sprintf,本来就是这样的 如果确实需要这么高的精度,我知道Java里有BigDecimal,C++可以找一下第三方库 或者自己写结构,将小数分段存为几个整数
直接定义,然后打印出来就是对的,可能是要求的小数位太多了。
小白的骑士 2021-01-04
  • 打赏
  • 举报
回复
引用 2 楼 早打大打打核战争的回复:
没有通用的方法,只能希望你用的库实现有更高的转换精度,就我的测试,只有C++Builder 64位编译器能正确转换为13082.872500000000
其他的C++编译器,VC++、 intel C++、GCC,包括C++Builder 32位编译器,转换都是13082.872499999999
谢谢您。我再看看哈,真是麻烦您了
Chgooo 2021-01-04
  • 打赏
  • 举报
回复
浮点数精度限制 13082.8725存到内存中时已经是13082.872599999990,所以错不在sprintf,本来就是这样的 如果确实需要这么高的精度,我知道Java里有BigDecimal,C++可以找一下第三方库 或者自己写结构,将小数分段存为几个整数
  • 打赏
  • 举报
回复
没有通用的方法,只能希望你用的库实现有更高的转换精度,就我的测试,只有C++Builder 64位编译器能正确转换为13082.872500000000
其他的C++编译器,VC++、 intel C++、GCC,包括C++Builder 32位编译器,转换都是13082.872499999999
赵4老师 2021-01-04
  • 打赏
  • 举报
回复

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧