float类型在展现时 对小数位数保留处理

        最近在些东西时候,发现这样一件事,就是数据库中查到的数据,虽然是float的,但是如果后面小数位是00,则会出现这样的情况

        看起来很不美观,如果保持一样的小数位数,使页面美观,就可以有一下几个方式

方式一:脚本处理

        四舍五入

var num =2.446;
num = num.toFixed(2); // 输出结果为 2.45

         直接舍去

Math.floor(15.778 * 100) / 100 // 输出结果为 15.77

也可以创建函数,可以供其它位置调用

//四舍五入保留2位小数(若第二位小数为0,则保留一位小数)
function keepTwoDecimal(num) {
 var result = parseFloat(num);
 if (isNaN(result)) {
     alert('Error!');
     return false;
 }
 result = Math.round(num * 100) / 100;
 return result;
}

//四舍五入保留2位小数(不够位数,则用0替补)
function keepTwoDecimalFull(num) {
 var result = parseFloat(num);
 if (isNaN(result)) {
     alert('Error!');
     return false;
 }
 result = Math.round(num * 100) / 100;
 var s_x = result.toString();
 var pos_decimal = s_x.indexOf('.');
 if (pos_decimal < 0) {
     pos_decimal = s_x.length;
     s_x += '.';
 }
 while (s_x.length <= pos_decimal + 2) {
     s_x += '0';
 }
 return s_x;
}

还有一些其它的操作

//向上取整
Math.ceil(5/2)

//字符串保留两位小数
Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) // 输出结果为 15.77,不能用于整数如 10 必须写为10.0000

方式二:服务端处理,我这里使用的tp6

        php中有一个函数可以满足我的需求 number_format,具体使用方式如下

number_format ( float $number , int $decimals = 0 , string $dec_point = “.” , string $thousands_sep = “,” ) : string
本函数可以接受1个、2个或者4个参数(注意:不能是3个):

如果只提供第一个参数,number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","

如果提供两个参数,number将保留小数点后的位数到你设定的值,其余同楼上

如果提供了四个参数,number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep
 

$a = 1111;
echo number_format($a); 
//输出 1,111
echo number_format($a,2); 
//输出 1,111.00 
echo number_format($a,2,".",""); 
//输出 1111.00

使用的地方 两个浮点型,在进行加减比较的时候,有时候小数位数 会被 去除。

$a = 11.44;
$b= 22.44;
echo  number_format($b-$a,2);
//输出 11.00

需要注意的是,第三个参数 和第四个参数可以不写,不能只写三个参数;只写三个参数会报错;

        我个人采用的事服务端的处理形式,因为后期可以依据需求,更改对小数位数的数量配置,这样就不用去更改服务端的脚本,省去了一部分可能产生的成本,这样看起来是不是舒服多了

        其它语言一定会有各自的处理函数,就说这些了,,如有不妥,请多见谅

猜你喜欢

转载自blog.csdn.net/ITMyFavorite/article/details/130574726