Xcode开发BMI计算器应用运行时计算结果小数位数过多如何解决?
问题原因
直接将Double类型的BMI值转换为String时,会默认输出该浮点数的所有有效小数位,因此会出现小数位数过多的问题,你可以通过浮点数格式化的方式控制输出的小数位数,通常BMI结果保留1~2位小数即可满足使用需求。
修复方案
方案1:使用String内置格式化语法(最简单)
直接在生成String时指定小数保留位数即可,修改后的点击事件代码如下:
@IBAction func btnCalculateBMI(_ sender: Any) { // 额外增加非空判断,避免输入非法值时应用崩溃 guard let heightText = txtHeight.text, let height = Double(heightText), height > 0 else { lblOutput.text = "请输入有效的身高" return } guard let weightText = txtWeight.text, let weight = Double(weightText), weight > 0 else { lblOutput.text = "请输入有效的体重" return } let bmi = weight / (height * height) // %.2f代表保留2位小数,要保留1位就改为%.1f,保留整数改为%.0f lblOutput.text = String(format: "%.2f", bmi) }
方案2:使用NumberFormatter(更灵活)
如果需要后续统一调整数字格式、适配不同地区的数字显示习惯,可以用NumberFormatter实现:
@IBAction func btnCalculateBMI(_ sender: Any) { guard let heightText = txtHeight.text, let height = Double(heightText), height > 0, let weightText = txtWeight.text, let weight = Double(weightText), weight > 0 else { lblOutput.text = "请输入有效的身高体重" return } let bmi = weight / (height * height) let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = 2 // 最多保留2位小数 formatter.minimumFractionDigits = 1 // 最少保留1位小数,可按需调整 if let formattedBmi = formatter.string(from: NSNumber(value: bmi)) { lblOutput.text = formattedBmi } }
内容的提问来源于stack exchange,提问作者DanielNgJX
相关产品推荐
相关产品推荐

