double型转换成string型
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型的更多相关文章
- 如何将int整型转换成String字符串类型
自动类型转换适用于兼容类型之间从小范围到大范围数据的转换. nt转换成String int i = 10; int b=1: System.out.pritnln(a + b); 里面靠近字符串,所以 ...
- VB中将INT型转换成STRING和从STRING转换成INT型的函数
CStr 函数示例本示例使用 CStr 函数将一数值转换为 String. Dim MyDouble, MyStringMyDouble = 437.324 ' MyDouble 为 Double ...
- C# 中怎么将string转换成int型
int intA = 0;1.intA =int.Parse(str);2.int.TryParse(str, out intA);3.intA = Convert.ToInt32(str);以上都可 ...
- 将字符“12345”转换成long型
将字符“12345”转换成long型 解答: String s=”12345″; long num=Long.valueOf(s).longValue();
- C++ 字符串分割,并把子字符串转换成int型整数
主要涉及到string类的两个函数find和substr: find()函数的用法: 原型:size_t find ( const string& str, size_t pos = 0 ) ...
- sql 将8位字符串转换成日期型
将8位字符串转换成日期型,方法如下: ),)
- java使用格式String型转成Date型
public class TimeTwo { public static void main(String[] args) throws ParseException{ String s = &quo ...
- impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)
impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)例如Query: select cast(round(2 / 3, 4)*100 as string)+-- ...
- Java 里把 InputStream 转换成 String 的几种方法
我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之 ...
随机推荐
- 注解配置AOP切面编程
1.导入先关jar包 2.编写applicationContext.xml,配置开启注解扫描和切面注解扫描 <?xml version="1.0" encoding=&quo ...
- 1CSS简介
-------------------------------------------------------------------------------------------------- - ...
- Win10中的睡眠、休眠
共同点: 都是节能技术. 异同点: 睡眠: 需要耗电.通过键盘鼠标唤醒.唤醒速度快.将用户正在处理的数据保存到内存中,除内存以外的所有设备都停止供电. 休眠: 不需耗电.通过电源键唤醒.唤醒速度慢.将 ...
- 6.11---字节输入流数据根据字节输出流存到文件中---io流概念及分类---文件存储的原理和记事本打开的原理---字节流读取文件的原理---文件复制的原理
- Struts之 拦截器配置 ( Interceptor )
struts2体系结构的核心就是拦截器. 以链式执行,对真正要执行的方法(execute())进行拦截.首先执行Action配置的拦截器,在Action和Result执行之后,拦截器再一次执行(与先前 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作
SAS学习笔记之<SAS编程与数据挖掘商业案例>(2)数据获取与数据集操作 1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序, 2. BY语句,DATA步中,BY语句规定 ...
- VC++文件监控 ReadDirectoryChangesW
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <assert.h&g ...
- spring+spring MVC+mybatis 框架搭建
1.新建一个javaWeb工程Test,创建时记得勾选web.xml文件. 2.导入需要的jar包,Mybatis所有的jar,spring所有的jar,mysql驱动包. 这里mybatis和spr ...
- Linux Shell ssh登录脚本
Linux 登陆服务器敲命令太多,某时候确实不便,所以就用shell写了一个 我的blog地址: http://www.cnblogs.com/caoguo 一.说明 支持秘密和密钥两种格式 用户名 ...
- Centos初始化硬盘分区、挂载
刚刚买了一台服务器,刚买的服务器的数据盘都是需要自己来分区的,下面就记录一下操作. 通过命令fdisk-l查看硬盘信息 可以看到有两块硬盘/dev/vda和/dev/vdb,启动vda是系统盘vdb是 ...