前言
应用开发中,遇到上传音频功能,需要展示音频大小。使用wx.chooseMessageFile(Object object)函数返回音频大小size的单位是B。B单位太小,不便于阅读。因此需要转为KB或者MB等单位。
知识点:
1、toPrecision()
toPrecision() 方法,返回指定长度的数值字符串。
toPrecision() 方法,以指定的精度返回该数值对象的字符串表示,四舍五入到 precision 参数指定的显示数字位数。
2、Math.pow(x,y)
Math.pow(x, y) 方法,返回一个浮点数,表示 x 的 y 次幂( 次方 )。
如果 x 为负且 y 不是整数,则返回 ValueError。 该方法会将两个参数转换为浮点数。 math.pow(1.0,x) 或 math.pow(x,0.0),始终返回 1.0。
- x -- 必需,一个代表基数的数字。
- y -- 必需,一个代表指数的数字。
3、Math.log(x[, base])
Math.log(x[, base]) 方法,返回一个整数浮点数 float,表示 x 的自然对数(底为 e )。
- x -- 必需,数字。如果 x 不是一个数字,返回 TypeError。如果值为 0 或负数,则返回 ValueError。
- base -- 可选,底数,默认为 e。
具体演示代码
<template>
<text>大小:{
{data.size | filterType}}</text>
</template>
<script>
export default {
data() {
return {
size: 56897546, // 单位B
}
},
filters: {
filterType:function(val){
if(val === 0) return "0KB"
var k = 1024;
var sizes = ['B','KB','MB','GB','PB','TB','EB','ZB','YB'],
i = Math.floor(Math.log(val) / Math.log(k));
return (val / Math.pow(k,i)).toPrecision(3) + "" + sizes[i]
}
},
}
</script>
参考:https://blog.csdn.net/qq_17211063/article/details/121681929