You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Measurement对象的数值格式化为保留1位小数?

解决Measurement对象保留1位小数并显示单位的问题

你可以通过Measurement.FormatStyle的numberFormat修饰符精确控制小数位数,同时自动处理单位的本地化转换与显示,比手动字符串插值更可靠、代码更简洁。

核心实现思路

利用FormatStyle链式调用,在.measurement()样式后添加.numberFormat配置,指定小数的最大和最小位数为1,既强制显示1位小数,又保留单位的本地化描述。

修改后的示例代码

struct MeasurementView: View {
    let reportedTemperature = Measurement(value: 50.123, unit: UnitTemperature.celsius)
    let myLocale = Locale.autoupdatingCurrent
    
    var body: some View {
        VStack(spacing: 12) {
            // 1. 缩写单位 + 1位小数(自动适配Locale单位)
            Text(reportedTemperature.formatted(
                .measurement(width: .abbreviated)
                    .numberFormat(.number.precision(.fractionLength(1)))
            ))
            
            // 2. 完整单位名称 + 1位小数
            Text(reportedTemperature.formatted(
                .measurement(width: .wide)
                    .numberFormat(.number.precision(.fractionLength(1)))
            ))
            
            // 3. 窄格式(符号化单位)+ 1位小数
            Text(reportedTemperature.formatted(
                .measurement(width: .narrow)
                    .numberFormat(.number.precision(.fractionLength(1)))
            ))
            
            // 4. 手动指定Locale的场景(比如强制显示华氏度)
            Text(reportedTemperature.formatted(
                .measurement(width: .wide)
                    .numberFormat(.number.precision(.fractionLength(1)))
                    .locale(Locale(identifier: "en_US"))
            ))
        }
    }
}

关键细节说明

  • .fractionLength(1):同时设置最小和最大小数位数为1,无论原始数值小数位数多少,统一显示1位(如50.123显示为50.1,50显示为50.0)。若允许整数情况不显示小数,可改用.fractionLength(0...1)。
  • 自动单位转换:formatted方法会根据当前Locale自动转换温度单位(如英文系统转华氏度,中文系统保留摄氏度),无需手动调用converted(to:)。
  • 单位本地化风格:
    • .abbreviated:缩写形式(如"°F"、"°C")
    • .wide:完整名称(如"degrees Fahrenheit"、"摄氏度")
    • .narrow:符号化最简形式(如"°")

对比手动插值的优势

  • 无需手动拼接单位字符串,避免本地化适配错误
  • 自动处理单位转换,不用手动适配Locale调用converted(to:)
  • 遵循Apple格式化规范,边缘场景(极端数值、不同Locale单位规则)处理更可靠

内容的提问来源于stack exchange,提问作者JohnSF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:43:28