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

测试结果

参考

相关推荐
程序员鱼皮1 分钟前
前特斯拉 AI 总监:AI 编程最大的谎言,是 “提效”
前端·后端·ai·程序员·开发
pusheng202513 分钟前
普晟传感2026年新春年会总结与分析
前端·javascript·html
谢尔登14 分钟前
React19事件调度的设计思路
前端·javascript·react.js
Emma_Maria24 分钟前
本地项目html和jquery,访问地址报跨域解决
前端·html·jquery
Digitally25 分钟前
如何轻松地将大型音频文件从 iPhone 发送到不同的设备
ios·iphone
奋斗吧程序媛29 分钟前
常用且好用的命令
前端·编辑器
2301_7965125233 分钟前
【精通篇】打造React Native鸿蒙跨平台开发高级复合组件库开发系列:Lazyload 懒加载(懒加载的图片)
前端·javascript·react native·react.js·ecmascript·harmonyos
敲敲了个代码38 分钟前
从N倍人力到1次修改:Vite Plugin Modular 如何拯救多产品前端维护困境
前端·javascript·面试·职场和发展·typescript·vite
Yff_world1 小时前
网络安全与 Web 基础笔记
前端·笔记·web安全
Sapphire~1 小时前
Vue3-19 hooks 前端数据和方法的封装
前端·vue3