价格.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
    }
}

测试结果

参考

相关推荐
某柚啊几秒前
解决 minimatch 类型报错问题
前端·webpack·npm
前端 贾公子3 分钟前
npm 发包配置双重身份验证
前端·javascript·微信小程序·小程序·github
xkxnq12 分钟前
第四阶段:Vue 进阶与生态整合(第 48 天)(Vue 与 Axios 整合:实现 HTTP 请求的封装与拦截)
前端·vue.js·http
CappuccinoRose24 分钟前
React框架学习文档(三)
前端·react.js·ui·数组·标签·属性·jsx
LBJ辉28 分钟前
CSS - code
前端·css
旭日初扬28 分钟前
N32H762IIL调试中遇到的错误
前端
辰风沐阳30 分钟前
ES6 新特性: 解构赋值
前端·javascript·es6
猫头鹰源码(同名B站)32 分钟前
基于django+vue的时尚穿搭社区(商城)(前后端分离)
前端·javascript·vue.js·后端·python·django
weixin_4277716137 分钟前
npm 绕过2FA验证
前端·npm·node.js
2501_9160088941 分钟前
无需钥匙串快速创建 iOS 开发 / 发布证书 P12 CSR
android·ios·小程序·https·uni-app·iphone·webview