console.log((1000000).toLocaleString());
![迟海](http://img-cdn-tc.dcloud.net.cn/uploads/avatar/000/21/22/66_avatar_mid.jpg?v=0)
- 发布:2022-01-18 16:30
- 更新:2022-09-15 18:22
- 阅读:700
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11
手机系统: Android
手机系统版本号: Android 11
手机厂商: OPPO
手机机型: Reno Z
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: CLI
CLI版本号: 2.0.1-33520211229002
示例代码:
操作步骤:
调用必现
调用必现
预期结果:
返回正确的格式化后结果
返回正确的格式化后结果
实际结果:
并未格式化
并未格式化
bug描述:
Number.prototype.toLocaleString()
在安卓中返回值并未格式化,例如(1000000).toLocaleString()
运行后返回"1000000"
,但是正确的返回值应该是"1,000,000"
。IOS中是正常的,在andorid10和android11返回值都不正确。
![DCloud_UNI_GSQ](http://img-cdn-tc.dcloud.net.cn/uploads/avatar/000/86/84/57_avatar_mid.jpg?v=1635249686)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
![1***@qq.com](https://img-cdn-tc.dcloud.net.cn/account/identicon/6bf88bb92aec06a3915ed316e37d8c81.png)
main.js
里手动加上
// #ifdef APP-PLUS
// app toLocaleString 有bug,添加上
Number.prototype.toLocaleString = function() {
// 来自 https: //blog.csdn.net/qq_45768871/article/details/105592666
let [integer, decimal] = String(this).split('.');
let regExp = /\d{1,3}(?=(\d{3})+$)/g;
integer = integer.replace(regExp, '$&,');
let decimalTemp = ""
if (decimal) {
if ( decimal.length > 3) {
decimalTemp = decimal.slice(0,3)
}else{
decimalTemp = decimal
}
}
return `${integer}${!decimalTemp ? '': '.'+decimalTemp}`;
}
// #endif
迟海 (作者)
locales的参数是可选的,如果没有传是以系统语言环境为准,但是无论是zh-CN还是en-US都应该是要带千分位符的
2022-01-19 16:56
DCloud_UNI_GSQ
回复 迟海: 和运行环境的实现有关
2022-01-19 19:51