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<limits>
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;
}

double型转换成string型的更多相关文章

  1. 如何将int整型转换成String字符串类型

    自动类型转换适用于兼容类型之间从小范围到大范围数据的转换. nt转换成String int i = 10; int b=1: System.out.pritnln(a + b); 里面靠近字符串,所以 ...

  2. VB中将INT型转换成STRING和从STRING转换成INT型的函数

    CStr 函数示例本示例使用 CStr 函数将一数值转换为 String. Dim MyDouble, MyStringMyDouble = 437.324   ' MyDouble 为 Double ...

  3. C# 中怎么将string转换成int型

    int intA = 0;1.intA =int.Parse(str);2.int.TryParse(str, out intA);3.intA = Convert.ToInt32(str);以上都可 ...

  4. 将字符“12345”转换成long型

    将字符“12345”转换成long型 解答: String s=”12345″; long num=Long.valueOf(s).longValue();

  5. C++ 字符串分割,并把子字符串转换成int型整数

    主要涉及到string类的两个函数find和substr: find()函数的用法: 原型:size_t find ( const string& str, size_t pos = 0 ) ...

  6. sql 将8位字符串转换成日期型

    将8位字符串转换成日期型,方法如下: ),)

  7. java使用格式String型转成Date型

    public class TimeTwo { public static void main(String[] args) throws ParseException{ String s = &quo ...

  8. impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)

    impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)例如Query: select cast(round(2 / 3, 4)*100 as string)+-- ...

  9. Java 里把 InputStream 转换成 String 的几种方法

    我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之 ...

随机推荐

  1. nginx入门学习

    1.yum解决编译nginx所需的依赖包,之后你的nginx就不会报错了 yum install gcc patch libffi-devel python-devel zlib-devel bzip ...

  2. 大话设计模式--DI(依赖注入)

    1.背景 想象一个场景:有个功能通过某个参数决定了路由到不同的方法上或者几个方法模块可以自由搭配,咋办?一般人会对每个方法写一个helper(比如SendMessageForEmail.SendMes ...

  3. V-SQL的简单使用

    V-SQL概述: V-SQL,是对同望V3平台时间多数据支持非常重要的基础引擎.因为各个数据库的查询语句的语法有所不同,V-SQL的功能是把查询语句解析为执行系统连接的数据库(MSSQL,Oracle ...

  4. 新认知之WinForm窗体程序

    Windows应用程序和控制台应用程序有很大的区别 >Form1.cs  :窗体文件,程序员对窗体编写的代码一般都存放在这个文件中. >Form1.Designer.cs :窗体设计文件, ...

  5. UDP网络程序实例

    根据前面所讲的网络编程的基础知识,以及UDP网络编程的特点,下面创建一个广播数据报程序.广播数据报是一种较新的技术,类似于电台广播,广播电台需要在指定的波段和频率上广播信息,收听者也要将收音机调到指定 ...

  6. 03-Servlet 体系结构知识梳理

    一.Servlet体系结构 Java Web应用是基于Servlet规范运行,Servlet顶层类的关联如下图: 从图可看出,Servlet规范基本围绕这几个类运行,其中,与Servlet主动关联的有 ...

  7. FTP工作原理

    FTP工作原理 FTP两种传输方式:1.ASCII传输2.二进制传输 FTP主被动原理: 主动方式:1.用户与服务器建立控制通道2.客户端发出PORT指令,主动告诉服务器端口号3.服务器主动通过20端 ...

  8. Django 更新字段

    Django在1.7以后的版本提供数据迁移命令,用来在修改模型中的字段,更新到数据库 1. python manager.py makemigrations 命令用来创建迁移文件版本的 2. pyth ...

  9. 通过PHP怎样取到android系统下apk应用的包名,版本号等信息

    公司项目关系,要求在通过PHP解析android系统应用apk包内的一切可用的信息.比如说:APK包名,版本号,版本名,安装权限等一系列关于对应包的信息.通过google查找相关的解决方案,都没有找到 ...

  10. c#符号含义

    属性:(带手型图标)方法:(紫红色菱形)事件:(闪电)字段:(蓝色菱形) 还有很多,具体图标不好描述命名空间,类,接口,值类,枚举,清单或类信息项等