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

测试结果

参考

相关推荐
CocoaKier2 小时前
苹果商店详情顶部头图已面向所有开发者开放!
ios·apple
茶底世界之下2 小时前
同一张街拍,两种表达:用 Awaking 试一次高对比黑白
ios
用户033307413955 小时前
TypeScript using 与 AsyncDisposableStack:在真实服务端代码中协调多资源清理
前端
daisychey5 小时前
用 Playwright 做多平台内容分发,我踩过的 8 个坑
前端
调试人生的显微镜5 小时前
iOS开发入门:Interface Builder、基础控件及UITextField详解
后端·ios
IT_陈寒6 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
大龄秃头程序员6 小时前
iOS冷启动监控Demo
前端
光影少年6 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
掘金酱7 小时前
[稀土掘金 × 火山引擎] AI用量周榜冲刺赛|获奖名单公示
前端·人工智能·后端
泡泡oO7 小时前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈