Swift Celsius 的 measurementFormatter 不工作

Swift measurementFormatter from Celsius not working

我刚开始swift。 这就是我在操场上拥有的...

let tempF1 = Measurement(value: 98.6, unit: UnitTemperature.fahrenheit)  
let tempC1 = tempF1.converted(to: UnitTemperature.celsius)  
let convertedTemperature1 = MeasurementFormatter().string(from: tempC1)

输出:
98.6 华氏度
37.0000000000025 °C.
“98.6°F”

let tempC2 = Measurement(value: 37, unit: UnitTemperature.celsius)  
let tempF2 = tempC2.converted(to: UnitTemperature.fahrenheit)  
let convertedTemperature2 = MeasurementFormatter().string(from: tempF2)

输出:
37.0 摄氏度
98.59999999999546°F
“98.6°F”

如上所示,华氏度格式有效,但摄氏度格式无效...

知道我做错了什么吗??

谢谢

格式正确。

MeasurementFormatter 以正确的语言环境设置格式输出值,默认为 .current。这意味着无论您使用什么单位创建变量,它都将始终显示在与格式化程序的区域设置相对应的单位中。

具体设置语言环境会改变输出

let mf = MeasurementFormatter()
let temp = Measurement(value: 37.3, unit: UnitTemperature.celsius)
mf.locale = Locale(identifier: "en_GB")
print(mf.string(from: temp))
mf.locale = Locale(identifier: "fr_FR")
print(mf.string(from: temp))
mf.locale = Locale(identifier: "en_US")
print(mf.string(from: temp))

这输出:

37.3°C       - UK format, in Celsius, and with a period separator

37,3 °         - French format in Celsius, and with a comma separator

99.14°F     - USA format, in Fahrenheit, and with a comma separator