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

测试结果

参考

相关推荐
刘一说几秒前
Pinia状态持久化的“隐形陷阱“:为什么页面刷新后状态丢失?
前端·javascript·vue.js
心柠6 分钟前
webpack
前端·webpack·node.js
C澒7 分钟前
前端编码规范
前端·团队开发·代码规范
Zhu_S W19 分钟前
基于Java和Redis实现排行榜功能
前端·bootstrap·html
上海合宙LuatOS34 分钟前
LuatOS框架的使用(1)
java·开发语言·单片机·嵌入式硬件·物联网·ios·iphone
小马_xiaoen38 分钟前
Vue3 + TS 实现长按指令 v-longPress:优雅解决移动端/PC端长按交互需求
前端·javascript·vue.js·typescript
147API1 小时前
改名后的24小时:npm 包抢注如何劫持开源项目供应链
前端·npm·node.js
ziqi5221 小时前
第二十二天笔记
前端·chrome·笔记
鹤归时起雾.1 小时前
react一阶段学习
前端·学习·react.js
2301_780669861 小时前
HTML-CSS-常见标签和样式(标题的排版、标题的样式、选择器、正文的排版、正文的样式、整体布局、盒子模型)
前端·css·html·javaweb