博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
double型转换成string型
阅读量:6681 次
发布时间:2019-06-25

本文共 1359 字,大约阅读时间需要 4 分钟。

double型转换成string型

题目描写叙述:

如有一个函数。其可接受一个long double參数,并将參数转换为字符串。结果字符串应保留两位小数,比如,浮点值123.45678应该生成“123.45”这种字符串。表面上看来 这是一个意义不大的编程问题,然而。假设真要在实际中派上用场。函数应设计为具有一定弹性,以同意调用者指定小数位数。另外,函数也应该可以处理各种异常 情况,如像123.0或123这种整数。
转换函数接口:string do_fraction(long double value, int decplaces = 3)
题目分析:
经验之谈:①不管何时须要格式化一个数值。都应该先转换为一个字符串,这样可保证每位数刚好占领一个字符。②须要转化为字符串时候,能够考虑使用库函数
使用库函数将long double值转化为一个string应该非常easy,可是须要注意以下几个问题:
1)精度问题
由于stringstream对象默认精度为6。(这里须要强调一个精度,老式指的是小数位数,新式应该指的是所有位数),这就会有出现一个问题:假设很大的数,比如123456789.9,它就会转化为科学计数法,这显然不是我们须要的,所以我们使用库函数和转换之前,必须先把默认的精度设为最大
2)小数点位置问题
定位小数位使用string::find
在STL算法中使用一个常量来代表“数值未找到”,字符串中是string::npos
由于我们设定了小数点最大位数decplacea。所以我们要检查小数点位数。假设小于它。那么直接返回字符串。否则小数部分多余的要被截去。

截断字符串的方法:通常使用\0

插入变量\0之后,怎样截去后面的字符。一般採用自交换
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
參考代码:

string do_fraction(long double value, int decplaces = 3){    ostringstream out;    int prec = numeric_limits::digits10; //18 注意须要加上头文件#include
out.precision(prec); //覆盖默认精度 //从流中取出字符串 string str = out.str(); //推断是否有小数点。且还有decpalces位 size_t n = str.find(DECIMAL_POINT); if((n != string::npos) && (str.size() > n + decplaces)) { str[n + decplaces] = '\0'; //覆盖第一个多余的数字 } str.swap(string(str.c_str())); //删除NULL之后多余的字符 return str;}

转载于:https://www.cnblogs.com/yutingliuyl/p/7131588.html

你可能感兴趣的文章
MySQL查看和修改表的存储引擎
查看>>
py学习之道
查看>>
vs2015 + opencv3.4.0 + qt msvc2015_64-5.7.1 视屏显示
查看>>
关于——GCD
查看>>
2017-3-2 智慧吉首调研工作
查看>>
求解,一道嵌入式公司面试题
查看>>
easyUI的基础布局
查看>>
o(1)复杂度之双边滤波算法的原理、流程、实现及效果。
查看>>
Mongodb安装和基本命令
查看>>
python中requests模块使用
查看>>
git bash 常用命令 新手学习
查看>>
日记2014/06/25
查看>>
springboot+Druid+oracle 配置p6spy
查看>>
Maven编译、打war包
查看>>
WP8.1开发:简单的天气预报应用
查看>>
九 循环
查看>>
第十三周项目2-形状类族的中的纯虚函数
查看>>
组织炎症水平高的RA患者接受TNF拮抗剂治疗的效果更好
查看>>
[洛谷P3709]大爷的字符串题
查看>>
通过映射关系 动态转义为统一格式的数据 (支持 JSON 和 XML )
查看>>