收藏
回答

安卓真机下,toLocaleString无效

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug Android HarmonyOS 2.0 华为Mate40 8.0.25

一段数字格式化金钱形式的处理(即,前面有金钱符号,数字每三位加一个逗号,后面补两个零)。代码如下

function priceFormat(value{
  let options = {
    style"currency",
    currency"CNY",
  };
  if (value && Number(value)) {
    return (Number(value)).toLocaleString("zh-CN", options);
  } else {
    return (0).toLocaleString("zh-CN", options);
  }
}

之后,在开发者工具上,效果如下,可以看到,金额已经格式化为金钱的形式

接下来这张图是IOS的真机,手机型号为IOS13。效果如下,可以看到,金额已经格式化为金钱的形式

接下来的是我手机的真机预览图。效果如下,可以看到,只是单纯的显示了数字,并没有格式化为金钱的形式。

测试设备为华为Mate40,操作系统为HarmonyOS 2.0,考虑到华为和其他安卓机的差异性,之后拿小米手机做过一次测试,发生了同样的问题,可以暂时得到判断,在Android系统下,使用 toLocalString 这种方法去格式化金钱,是无效的,希望官方可以做出解答

回答关注问题邀请回答
收藏

2 个回答

  • 黄彪
    黄彪
    2023-12-18

    目前遇到的问题是:skyline模式下不生效。真是恶心,自己写一个方法吧

    2023-12-18
    有用
    回复 1
    • 黄彪
      黄彪
      2023-12-18
      var r = getRegExp('(\d{1,3})(?=(\d{3})+(?:))', 'g')
      var p = n.replace(r, "$1,")
      wxs文件里可以试试这样的,n为数字,类型是string, p是格式化后的字符串
      2023-12-18
      回复
  • 啊楠
    啊楠
    2022-08-11

    我也遇到了同样的问题,真机 IOS 没有问题,Android 不支持

    	amount(V, isFixed = 2) {
    		if (!V) {
    			return new Number(V || 0).toFixed(isFixed)
    		}
    		return V.toLocaleString('en-US', {
    			minimumFractionDigits: isFixed,
    			maximumFractionDigits: isFixed
    		})
    	};
    
    2022-08-11
    有用
    回复 1
    • 赵健棋
      赵健棋
      2022-08-15
      我在想,有没有一种可能。微信小程序在安卓的逻辑层是V8,而V8不支持toLocaleString。。。
      2022-08-15
      回复
登录 后发表内容