场景
开发的过程中需要显示一些double类型的数,但是又不能直接显示,需要四舍五入之后保留两位小数。如:
0.124567 四舍五入保留两位小数 0.12
0.231234 四舍五入保留两位小数 0.23
12.3416 四舍五入保留两位小数 12.34
34.2578 四舍五入保留两位小数 34.26
实现方式
针对于上述问题,可以有两种实现方式。下面逐一记录。
方法一
该方法除了可以将一个数四舍五入保留两位小数,还可以将一个数转换为百分比所需要的数值,同时四舍五入保留两位小数。
如:
0.123456 四舍五入保留两位小数后为 0.12
2.1367 四舍五入保留两位小数后为 2.14
0.125634 转换为百分比,且四舍五入保留两位小数 12.56
0.125684 转换为百分比,且四舍五入保留两位小数 12.57
下面是实现:
double makeValueKeepTwoDecimal(
const double &dValue, const int &nType)
{
double dTransValue = 0.00;
int nTempValue = 0;
int nValue = 0;
if (nType == 1)
{
nTempValue = dValue * 100000;
nValue = dValue * 10000;
}
else if (nType == 2)
{
nTempValue = dValue * 1000;
nValue = dValue * 100;
}
int nLastPersonValue = nTempValue % 10;
nLastPersonValue >= 5 ? ++nValue : nValue;
dTransValue = nValue / 100.00;
return dTransValue;
}
方法二
采用qt自带函数QString::number来实现,下面是实现:
QString stage(double v, int precision)
{
return (v >= 0.00 ? QString::number(v, 'f', precision) : "");
}
方法二的应用如下:
QString strNum = stage(1.2345456,2);
QString strPerNum = stage(0.231456*100,2);
总结
上述两种方法种,方法二使用更加好一点,可优先考虑使用方法二。因为方法一中,若四舍五入保留两位小数之后,数值为100,则只会显示100,不会显示100.00。方法二则不会存在这样的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)