首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中将字符串转换为精度为6位的双精度?

如何在C++中将字符串转换为精度为6位的双精度?
EN

Stack Overflow用户
提问于 2012-08-14 16:31:12
回答 2查看 908关注 0票数 0

我想知道如何将像"1234.123456"这样的字符串转换为doublefloat。我需要至少3位数的精度(即小数点后的3位数,而不管小数点之前的位数)。

EN

回答 2

Stack Overflow用户

发布于 2012-08-14 16:56:23

精确值1234.123456不能用任何常用的机器浮点格式表示。你所能做的就是选择你需要的精确度,并使用它。(在大多数现代机器上,double的精度为16位。但这仍然不意味着所有16位数的值都是完全可表示的。)

至于转换,就像转换任何类型一样:

代码语言:javascript
运行
复制
std::istringstream s( "1234.123456" );
double d;
s >> d;

并阅读http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html。它将解释为了安全地使用机器浮点而需要知道的最基本的基本知识。

票数 6
EN

Stack Overflow用户

发布于 2012-08-14 16:58:27

代码语言:javascript
运行
复制
#include<stdlib.h> 

int main()
{
    double dnum = atof( "1234.123456" ) ;

    printf ( "%f\n" , dnum ) ;

    return 0 ;
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11948540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档