微信小程序wxml中保留小数点后2位的方法

微信小程序wxml中保留小数点后2位的方法,第1张

1、 新建一个`filter.wxs`

```

var filters = {

    toFix: function (value) {

        return value.toFixed(2) // 此处2为保留两位小数,保留几位小数,这里写几

    }

}

module.exports = {

 陆芦   toFix: filters.toFix,toNumber: filters.toNumber,

}

```

2、 WXML中引入WXS

```

<wxs module="filters" src="../早宏带../utils/filters.wxs"></wxs>

```

3、 WXML中使用

```

<wxml>

{{ filters.toFix(price) }}

</wxml>

```

其他如绝瞎Numer()也是类似的用法

对于iOS或者安卓同学来说,可能会觉得特别简单吧。OC里就有原生类CLLocation计算坐标点距离。当然,大多数时候我们都是直接使用第三方计算,比如百度SDK。

但是接触到微信小程序后,由于可能刚起步,许多API并不完善。像百度SDK关于微信小程序的就没有提供这样的接口去计算。 百度地图微信小程序JS API

仔细翻一番看看,在开发指南->获取地图数据 菜单下只看到4个最基本的功能(POI检索、POI检索热词联想、逆地址解析、天气查询),并没有看到关于计算距离的。看到这些还好,至少不会继续下去入坑了。

后来我就度娘了,第一条检索就是腾讯地图开放平台的内容。这也是为什么今天我要写这篇文章的原因,我入坑了。友情提示,使用腾讯地图确实可以计算两坐标距离,但是呢?只能是10km以内的距离。不然调用后返握帆回结果: status: 373, message: "起终点距离超长"

如果不在意只是10km以内距离的话,想要去集成腾讯地图SDK,文档在此  腾讯地图微信小程序JavaScript SDK

最终解决方案只能自段哪雹己算了,不用第三方了。

//计算两坐标点之间的距离

  getDistance: function (lat1, lng1, lat2, lng2) {

    lat1 = lat1 || 0

   缓首 lng1 = lng1 || 0

    lat2 = lat2 || 0

    lng2 = lng2 || 0

    var rad1 = lat1 * Math.PI / 180.0

    var rad2 = lat2 * Math.PI / 180.0

    var a = rad1 - rad2

    var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0

    var r = 6378137

    return (r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)))).toFixed(0)

  },

需要注意的是,该方法返回单位为米,如果想要转换成公里,除以1000即可。

浮点数的二进制如果不能被灶中整除,比如0.1的二进制0.000110011....无限下去,由于存储空间有限,计算机会舍去最大长度后面的值咐衡,最后我们会得到一个近似衡辩做的值,处理方法:1,把浮点转为整数计算,比如 0.1*3 = 0.1*10*3/10 2,toFixed(1)保留小数位


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12534453.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存