Swift 如何使用Uint和Measurement转换单位

SI

iOS 10引入了一种新的系统,用于计算距离,长度,面积,体积,持续时间以及更多测量值。让我们从简单的事情开始。

基本使用

如果您六英尺高,则可以创建一个Measurement实例,如下所示:

let heightFeet = Measurement(value: 6, unit: UnitLength.feet)

请注意,Swift无法将.feet推断为UnitLength.feet,因为您很快就会看到很多Unit子类。

准备好测量后,可以将其转换为其他单位,如下所示:

let heightInches = heightFeet.converted(to: UnitLength.inches)    //英寸   1英尺等于12英寸
let heightSensible = heightFeet.converted(to: UnitLength.meters)  //米     1英尺等于0.3048米

您应该在输出中看到“ 72.0 in”和“ 1.8288 m”,表明转换过程已经完成。

像所有单元子类一样,UnitLength类涵盖了从旧到新的大量单位。例如,您可以将英尺转换为天文单位,该单位等于地球与太阳之间的平均距离,即大约1.5亿公里:

let heightAUs = heightFeet.converted(to: UnitLength.astronomicalUnits)

使用完一个单位后,其余单位的使用方法将完全相同。以下是一些帮助您入门的示例:

  • 将角度转换为弧度
let degrees = Measurement(value: 180, unit: UnitAngle.degrees)
let radians = degrees.converted(to: .radians)
  • 将平方米转换为平方厘米
let squareMeters = Measurement(value: 4, unit: UnitArea.squareMeters)
let squareCentimeters = squareMeters.converted(to: .squareCentimeters)
  • 将蒲式耳转换为英制茶匙
let bushels = Measurement(value: 6, unit: UnitVolume.bushels)
let teaspoons = bushels.converted(to: .imperialTeaspoons)

运算符

上面我们写了一个身高的例子我们可以运用一些基本运算符:

let heightFeet = Measurement(value: 6, unit: UnitLength.feet)
let heightInches = heightFeet.converted(to: UnitLength.inches)    //英寸   1英尺等于12英寸
let heightSensible = heightFeet.converted(to: UnitLength.meters)  //米     1英尺等于0.3048米
  • 加法和减法(不同单位会转化为 m)
let newHeight = heightFeet + heightInches
// 3.6576000000000004 m

let newHeight = heightFeet + heightInches
// 0.0 m
  • 乘法和除法
let newHeight = heightFeet * 2
// 12.0 ft

let newHeight = heightFeet * 2
// 3.0 ft
  • 相等以及不等于
heightFeet ==  heightInches ==  heightSensible
// true

heightFeet !=  heightInches
// false

格式化 MeasurementFormatter

  • 地区格式化
let length = Measurement(value: 6, unit: UnitLength.meters)
let formatter = MeasurementFormatter()
formatter.locale = NSLocale.system
print(formatter.string(from: length))

直接使用对应的系统地区,则在对应的地区显示对应的单位。

  • 精确度格式化
    我们看到上面的示例有的精度很高,但是有时候我们并不需要
let formatter = MeasurementFormatter()
formatter.unitOptions = .providedUnit
let numberFormatter = NumberFormatter()
numberFormatter.minimumIntegerDigits = 1 //小数前至少一位数字
formatter.numberFormatter.minimumFractionDigits = 1 //小数点后保留一位
print(formatter.string(from: heightInches))
//72.0 in  原值:72.00000000000001 in

print(formatter.string(from: heightInches + heightFeet))
//3.66 m  原值: 3.6576000000000004 m

我们创建我们的formatter并且要求它使用特定的.unitProvided: 即使用我们自己定义的单位。

MeasurementFormatter()和NumberFormatter()还有许多其他功能,不是很常用的我就没写了,也不是很了解o(╥﹏╥)o。

参考 https://www.hackingwithswift.com/example-code/system/how-to-convert-units-using-unit-and-measurement

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容