价格.0处理

在项目中有500.0 或者500.00的情况需要处理

实习的同学写了一段这样的代码

swift 复制代码
public extension String {
    var trimZero: String {
        replacingOccurrences(of: ".00", with: "").replacingOccurrences(of: ".0", with:"")
    }
}

咋一看似乎没啥问题,结果也符合预期

但是上面的case其实没有覆盖全,例如:500.01 ,那上面的处理方式就有bug了,会被处理成5001

正确的处理方式

swift 复制代码
public extension String {
    var trimZero: String {
        guard let value = Double(self) else { return self }
        let formatter = NumberFormatter()
        formatter.minimumFractionDigits = 0
        formatter.maximumFractionDigits = 2
        return formatter.string(from: NSNumber(value: value)) ?? self
    }
}

测试结果

参考

相关推荐
搬砖-无恙12 分钟前
vue+uniapp 获取上一页直接传递的参数
前端·vue.js·uni-app
树上有只程序猿12 分钟前
聚焦应用常用功能,提升用户体验与分发效率
前端
喆星时瑜16 分钟前
HBuilder运行uni-app程序报错【Error: listen EACCES: permission denied 0.0.0.0:5173】
前端·javascript·uni-app·hbuilder·error·端口占用
前端三叶草20 分钟前
记一次为js库开发声明文件的过程
前端·npm
37手游后端团队38 分钟前
websocket连接管理
前端·后端·websocket
bin91531 小时前
DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar)
前端·javascript·vue.js·ecmascript·deepseek
YiHanXii1 小时前
XSS(跨站脚本攻击)
前端·网络·xss
LinDaiuuj1 小时前
编程中,!! 双感叹号的理解
前端·javascript
呦呦鹿鸣Rzh1 小时前
SpringMVC的请求-文件上传
java·前端·html
samroom1 小时前
ES6规范新特性总结
前端·javascript·es6