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,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之 ...
随机推荐
- Zabbix Server参数文件详解
Zabbix的配置文件一般有三种: zabbix_server.conf:zabbix server的配置文件 zabbix_proxy.conf:zabbix proxy的配置文件 zabbix_a ...
- Python安装distribute包
从官网https://pypi.python.org/pypi/distribute/0.6.49#downloads上下载distribute包,解压后进入解压文件的目录下,使用 python se ...
- C#用Microsoft.Office.Interop.Word进行Word转PDF的问题
之前用Aspose.Word进行Word转PDF发现'\'这个字符会被转换成'¥'这样的错误,没办法只能换个方法了.下面是Microsoft.Office.Interop.Word转PDF的方法: p ...
- Web程序安全机制
ASP.NET提供了一个多层的安全模型,这个模型能够非常容易的保护Web应用程序. 安全策略没有必要非常复杂,但是需要应用安全策略的地方却是非常广泛的.程序员需要保证自己的应用程序不能被骗取,而把私有 ...
- 检查阿里云ssl证书到期情况
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-06-10 16:00 # @Author : Anthony.long # ...
- ionic2 打包时报错 file-opener2
在app自动更新过程中,有用到ionic-native插件:cordova-plugin-file-openner2 添加插件后,打包时有错: FAILURE: Build failed wit ...
- Centos永久路由添加教程
Centos 永久路由添加,一张图看懂全部 blog地址:http://www.cnblogs.com/caoguo
- c#用控制台程序安装启动停止卸载服务
第一步:新建控制台项目 第二步:添加服务 第三步:右键新建完成的服务项 点击 在start 和stop事件中分别写上 第四步 编写代码 双击打开 using System; using Syst ...
- SqlServer Function
set quoted_identifier on; set ansi_nulls on; go create function [dbo].[Get_StrArrayStrOfIndex] ( @st ...
- [LUOGU] 4933 大师
\(Orz\) \(ljt12138!\) 设状态\(f[i][j]\)表示以\(i\)为结尾,公差为\(j\)的长度大于\(1\)的数列有几个. 然后转移方程就很好想了. \(k=H[i]-H[j] ...