VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1052|回复: 2

[求助] cstring转float保留如何精度

[复制链接]
88_avatar_middle
online_vip 发表于 2016-12-8 23:10:26 | 显示全部楼层 |阅读模式
用_ttof()转换时41.387会变成41.38690000001,我想要转换之后也是41.387啊




上一篇:有没有可以根据键盘某个键的字符串名字来获取其键值的api呢
下一篇:关于函数返回指针的删除问题
51_avatar_middle
online_admins 发表于 2016-12-9 09:52:33 | 显示全部楼层
atof 精度问题

经常要用到将浮点字符串转为浮点数,之前一直用的是atof,这个是返回float ,即有效数字是在小数点后六位,如果对精度要求更高的话就需要用 strtod 这个函数了 。
并且这个可以处理更复杂的情况:

  1. int main ()
  2. {
  3.   char szOrbits[] = "365.24 29.53";
  4.   char * pEnd;
  5.   double d1, d2;
  6.   d1 = strtod (szOrbits,&pEnd); //自动处理截断,并将后一部分赋值到pend,如果不需要则用NULL
  7.   d2 = strtod (pEnd,NULL);
  8.   printf ("The moon completes %.2f orbits per Earth year.\n", d1/d2);
  9.   return 0;
  10. }
复制代码


那直接实现 atof 的功能:
char *str = "113.29464653";
double d = strtod(str,NULL);
参考:
1:http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/
88_avatar_middle
ico_lz  楼主| 发表于 2016-12-12 01:24:22 | 显示全部楼层
如何设定要截断到第几位?(不是在float转Cstring时截断,而是在Cstring时候截断,因为我要用n个float相加,如果我循环相加41.387 一千万次和循环相加41.38690000001一千万次结果是会大大不同的)
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-19 20:04

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表