console.log((1000000).toLocaleString()); 
                                        
                                    
                                    - 发布:2022-01-18 16:30
- 更新:2022-09-15 18:22
- 阅读:827
产品分类: 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返回值都不正确。
 
                                                                    
                                                                https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
 
                                                                    
                                                                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