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

测试结果

参考

相关推荐
梦仔生信进阶43 分钟前
基于R计算皮尔逊相关系数
前端·数据库·r语言
liuweidong080244 分钟前
【Pandas】pandas Series rtruediv
前端·javascript·pandas
布兰妮甜2 小时前
px、em 和 rem 的区别:深入理解 CSS 中的单位
前端·css·px-em-rem·布局技巧·css单位
然后就去远行吧4 小时前
小程序组件 —— 31 事件系统 - 事件绑定和事件对象
前端·javascript·小程序
xcLeigh5 小时前
html5各行各业官网模板源码下载 (4)
前端·html·html5
疯狂的沙粒6 小时前
对React的高阶组件的理解?应用场景?
前端·javascript·react.js·前端框架
lryh_6 小时前
react 中使用ant 的 Table时警告:没有设置key
前端·react.js·前端框架
子燕若水6 小时前
Unreal Engine 5 (UE5) Metahuman 的头部材质
前端·ue5·材质
互联网-小阿宇7 小时前
【HTML+CSS+JS+VUE】web前端教程-31-css3新特性
前端·javascript·css