swift - 摄氏的快速测量格式化程序不起作用
问题描述
我只是从 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 °F
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 °C
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
推荐阅读
- sql - Datagridview update to multiple tables without using bindingsource or tableadapter
- python - 如何传播默认值
- python - 在 Keras 中向自动编码器添加一个乘法层
- arrays - Comparing two arrays of similar objects, with a list of the unique properties as well
- math - Ball arithmetic vs interval arithmetic
- python - Pytest mocking an eval imported function
- html - 如何将图标放在textarea中?
- python - Python。嵌套字典列表:奇怪的行为
- azure - Azure New-AzureStorageBlobSasToken 返回不正确的 fulluri 字符串
- scala - Spark - 读取许多小型镶木地板文件可事先获取每个文件的状态