c++、vc++ 数据精度、小数点取舍、数据四舍五入、保留2位小数、数据之间加入","
来源:互联网 发布:淘宝服装货源怎么找 编辑:程序博客网 时间:2024/05/22 00:05
// 数据精度计算
// 第一个参数为:代处理的数;
// 第二参数个为:要保留小数点后几位
CString DataPrecision(LPCTSTR lpszsrc, int nseveral);
// 在数据中插入","分隔数据段
CString DataInsertSeparator(LPCTSTR lpszsrc, int nseveral);
CString C***::DataPrecision(LPCTSTR lpszsrc, int nseveral)
{
CString strreturn(lpszsrc);
// 当值为""时
if (0 == _tcsicmp(_T(""), strreturn)
|| 0 == _tcsicmp(_T("0"), strreturn)
|| 0 == _tcsicmp(_T("0.0"), strreturn)
|| 0 == _tcsicmp(_T("0.00"), strreturn))
{
return _T("0.00"); // 默认给两位小数
}
int npos = strreturn.Find(_T("."));
if (npos > 0)
{
CString strseveral = strreturn.Mid(npos + nseveral, 2); // nseveral位小数所在的位和其后一位
int nmid = atoi(strseveral); // 取得两位数
// 计算是否需要进位
if ((nmid%10) > 4 && (nmid%10) < 10)
{
nmid = nmid/10 + 1;
}else
{
nmid = nmid/10;
}
CString strmid(_T(""));
strmid.Format(_T("%d"), nmid);
strreturn.Delete(npos + nseveral, 1); // 从字符中删除保留位的数据
strreturn.Insert(npos + nseveral, strmid); // 插入新的数据
strreturn = strreturn.Left(strreturn.Find(_T(".")) + nseveral +1); // 取字符串小数点后nseveral位
strreturn = DataInsertSeparator(strreturn, nseveral);
}
// "-1.#0" 错误值时
if (strreturn.Find(_T("-")) >= 0 && strreturn.Find(_T("#0")) >= 0)
{
strreturn = _T("0.00");
}
return strreturn;
}
CString C***::DataInsertSeparator(LPCTSTR lpszsrc, int nseveral)
{
CString strdata(lpszsrc);
int npos = strdata.Find(_T("."));
if (strdata.GetLength() > (4 + nseveral)) // 数据如:1,000.12
{
strdata.Insert(npos - 3, _T(","));
}
if (strdata.GetLength() > (8 + nseveral)) // 数据如:1,000,000.12
{
strdata.Insert(npos - 6, _T(","));
}
if (strdata.GetLength() > (12 + nseveral)) // 数据如:1,000,000,000.12
{
strdata.Insert(npos - 9, _T(","));
}
if (strdata.GetLength() > (16 + nseveral)) // 数据如:1,000,000,000.12
{
strdata.Insert(npos - 12, _T(","));
}
if (strdata.GetLength() > (20 + nseveral)) // 数据如:1,000,000,000,000.12
{
strdata.Insert(npos - 15, _T(","));
}
if (0 == strdata.Find(_T("-"))) // 如果是个负数,则负号后面不能带"," 如:-,654,999.55
{
if (1 == strdata.Find(_T(",")))
{
strdata.Delete(1,1); // 删除在第二位的字符","
}
}
return strdata;
}
- c++、vc++ 数据精度、小数点取舍、数据四舍五入、保留2位小数、数据之间加入","
- c++、vc++ 数据精度、小数点取舍、数据四舍五入、保留2位小数
- 浮点类型数据四舍五入保留两位小数
- 使Decimal类型数据保留N位小数且不进行四舍五入操作(C#)
- 把一个double的数据四舍五入并保留小数点后2位
- Android 整数数据保留2位小数点
- double类型数据保留2位小数点
- Double 数据保留两位小数二:直接截取小数后面两位,不进行四舍五入
- 四舍五入 double数据 两位小数
- JavaScript计算两个文本框内数据的乘积(四舍五入保留两位小数)
- js中Double类型数据保留两位小数(非四舍五入)
- 实型数据的输入输出。如何保留x位小数?如何四舍五入?数据类型转换?
- java double类型数据保留小数点四舍五入功能
- 数据保留两位小数,格式化时间
- ORACLE 查询数据 保留两位小数
- 拼接存储过程 数据保留2位小数
- 保留小数点2位,四舍五入,java
- Java数据保留小数
- C++实现链表操作
- startActivityForResult的用法
- mysql数据库的优化
- oracle ORA-01704: string literal too long问题分析
- Phil Libin的六步计划 让Evernote从应用变成平台
- c++、vc++ 数据精度、小数点取舍、数据四舍五入、保留2位小数、数据之间加入","
- strlen与sizeof区别
- Bloom Filter
- SqlDataReader的GetChar不支持所指定的方法
- java读取zip文件和压缩zip文件
- C++ string转换CString .
- Apache与Tomcat的区别以及几种常见的web应用服务器
- http://www.jeasyui.com/demo/index.php
- 动态显示当前时间(js)