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

测试结果

参考

相关推荐
莘薪15 分钟前
JQuery -- 第九课
前端·javascript·jquery
好青崧19 分钟前
CSS 样式入门:属性全知晓
前端·css·tensorflow
光头程序员40 分钟前
工程化开发谷歌插件到底有爽
前端·react·工程化·前端工程化·谷歌插件
蒜蓉大猩猩44 分钟前
Vue.js --- Vue3中其他组合式API
前端·javascript·vue.js·前端框架·node.js·html
铅华尽1 小时前
前端---HTML(一)
前端
无限大.1 小时前
0基础学前端系列 -- 深入理解 HTML 布局
前端·html
珹洺1 小时前
从 HTML 到 CSS:开启网页样式之旅(开篇之一)——CSS 初体验与网页样式新征程
前端·javascript·css·前端框架·html
前端Hardy1 小时前
HTML&CSS:翻书加载效果
前端·javascript·css·3d·html·css3
问道飞鱼1 小时前
【前端知识】SCSS(Sassy CSS)是一种CSS预处理器语言
前端·css·less·scss
窗边的anini1 小时前
在React中使用SVG的几种方式
前端·react.js·svg