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

Swift中夸脱转杯的体积单位转换结果异常,求助排查原因

Swift中夸脱转杯的体积单位转换结果异常,求助排查原因

嘿,这个问题我之前踩过坑!完全不是你的代码问题,也不是Swift的bug,核心是单位定义的细节差异在搞鬼~

我们平时说的“1夸脱=4杯”,指的是美制惯用液体夸脱(US liquid quart)转美制惯用杯(US customary cup)——前者是946.353mL,后者是236.588mL,刚好是4倍的关系。但Swift的Measurement框架里,默认的UnitVolume.cups对应的是美制法定杯(US legal cup)(容量240mL,是食品标签等官方场景用的标准),所以用默认的cups来转换的话,计算式就是 946.353 / 240 ≈ 3.9431375,也就是你看到的测试失败结果。

解决方法很简单,把转换的目标单位换成专门的美制惯用杯单位就行,修改后的测试代码如下:

func testUnitConversions() throws {
    let quarts = Measurement(value: 1, unit: UnitVolume.quarts)
    let conversion = quarts.converted(to: UnitVolume.usCustomaryCups)
    let value = conversion.value
    XCTAssertEqual(value, 4)
}

这样运行后,转换结果就会是精确的4,测试就能顺利通过啦。

另外补充一句:如果你想让代码更清晰,也可以把夸脱单位明确写成UnitVolume.usLiquidQuarts,不过默认的quarts本身就指代美制液体夸脱,所以不修改也不影响结果。

备注:内容来源于stack exchange,提问作者Cosmo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:19:38