测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2016年11月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Michal Konturek 维护。
MKUnits 是一个极为精确的 Swift
单位转换库。它提供了物理量的度量单位,并简化了它们的操作。
注意 对于 Objective-C
实现,请参考 MKUnits pod 2.2.1 或访问 存档分支。
MKUnits 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。
MKUnits 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "MKUnits"
让我们创建 1.5 千克 (kg),
let kilograms = 1.5.kilogram()
0.5 (kg) 转换为克 (g)
let grams = 500.gram()
和 10 磅 (lb)(相当于 4.5359237 (kg))
let pounds = 10.pound()
然后将所有这些加在一起,并减去 0.0001 (kg) 毫克 (mg)。
let milligrams = 100.milligram()
var result = kilograms + grams + pounds - milligrams
结果数量是 6.5358237 (kg)。
现在我们减去 0.5358237 (kg) 盎司 (oz),根据谷歌转换器,它相当于 18.900624805 (oz),但作为 MKUnits 非常精确,实际上是 18.900624805483390296005199558361177 (oz)。
let ounces = 0.5358237.kilogram().converted(MassUnit.ounce)
result = result - ounces
结果数量大约是 6 (kg);确切地说是 6.00000000000000000000000000000000003 (kg)。
现在我们想将结果转换为石 (st),因此
result = result.converted(MassUnit.stone)
// 0.94483873964811055873038869091017890993 st
由于结果过于精确,我们希望将其四舍五入。
let rounded = result.rounded(3)
// 0.945 st
目前 MKUnits 支持以下 组单位
您可以通过添加新的 组单位
或 单位
来轻松扩展 MKUnits。
单元组
要添加一个新的 单元组
,只需创建一个继承自 Unit
的类,并遵循以下约定。
请确保在新的 单元组
中 单元符号
是唯一的。
public final class NewUnit: Unit {
public static var unitA: NewUnit {
return NewUnit(
name: "unit A",
symbol: "uA",
ratio: NSDecimalNumber.one() // as it is a base unit
)
}
public static var unitB: NewUnit {
return NewUnit(
name: "unit B",
symbol: "uB",
ratio: NSDecimalNumber(mantissa: 2, exponent: 0, isNegative: false)
)
}
}
extension NSNumber {
public func unitA() -> Quantity {
return Quantity(amount: self, unit: NewUnit.unitA)
}
public func unitB() -> Quantity {
return Quantity(amount: self, unit: NewUnit.unitB)
}
}
单元组
添加新的单元要向现有的 单元组
添加更多单元,只需为该 单元组
创建一个分类。
不要子类化,因为单元只能与同一 单元组
的单元进行转换。
extension NewUnit {
public static var unitC: NewUnit {
return NewUnit(
name: "unit C",
symbol: "uC",
ratio: NSDecimalNumber(mantissa: 4, exponent: 0, isNegative: false)
)
}
}
extension NSNumber {
public func unitC() -> Quantity {
return Quantity(amount: self, unit: NewUnit.unitC)
}
}
git checkout -b new-feature
)。git commit -am 'Added new-feature'
)。git push origin new-feature
)。