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

测试结果

参考

相关推荐
37方寸几秒前
前端基础知识(JavaScript)
开发语言·前端·javascript
json{shen:"jing"}1 小时前
1. 两数之和
前端·javascript·数据库
github.com/starRTC1 小时前
Claude Code中英文系列教程19:使用subagent子代理与创建自定义子代理【重要】
前端·javascript·数据库
hua_ban_yu1 小时前
vue3 + ts 制作指令,防止按钮在固定时间内重复点击,不会影响到表单的校验
前端·javascript·vue.js
老神在在0011 小时前
Token身份验证完整流程
java·前端·后端·学习·java-ee
利刃大大2 小时前
【Vue】指令修饰符 && 样式绑定 && 计算属性computed && 侦听器watch
前端·javascript·vue.js·前端框架
徐小夕@趣谈前端3 小时前
NO-CRM 2.0正式上线,Vue3+Echarts+NestJS实现的全栈CRM系统,用AI重新定义和实现客户管理系统
前端·javascript·人工智能·开源·编辑器·echarts
catino3 小时前
图片、文件上传
前端
Mr Xu_3 小时前
Vue3 + Element Plus 实现点击导航平滑滚动到页面指定位置
前端·javascript·vue.js
小王努力学编程4 小时前
LangChain——AI应用开发框架(核心组件1)
linux·服务器·前端·数据库·c++·人工智能·langchain