Ios 如何处理重量转换

Ios 如何处理重量转换,ios,swift,Ios,Swift,在使用健身器材时,我目前面临着一个在公制和英制重量之间转换的问题。因此,在英国,我们使用的重量单位为千克,可以增加1.25磅,但在国外,即美国,重量单位为磅,可以增加0.5磅 处理这不是一个问题,当我使用公式在千克和磅之间转换时,问题就出现了,反之亦然,值相差很远。例如,一个标准的英国杠铃重20公斤,一个美国杠铃重45磅,但当我使用测量类转换时,它会吐出44.0925磅。我已经知道,要将千克换算成磅,你必须将其乘以2.205,但这只是一个例子,其他值也是如此 我已经想到了一些其他可能的解决方案,

在使用健身器材时,我目前面临着一个在公制和英制重量之间转换的问题。因此,在英国,我们使用的重量单位为千克,可以增加1.25磅,但在国外,即美国,重量单位为磅,可以增加0.5磅

处理这不是一个问题,当我使用公式在千克和磅之间转换时,问题就出现了,反之亦然,值相差很远。例如,一个标准的英国杠铃重20公斤,一个美国杠铃重45磅,但当我使用测量类转换时,它会吐出44.0925磅。我已经知道,要将千克换算成磅,你必须将其乘以
2.205
,但这只是一个例子,其他值也是如此

我已经想到了一些其他可能的解决方案,一个是以千克为单位的可能值数组,另一个是以磅为单位的可能值数组,但这感觉很粗糙,也不起作用,因为用户可以将其值输入到文本字段中,而文本字段可能是无效值


我只是好奇地想看看/知道是否有人在使用健身器材之前解决过体重转换问题。

我通过将用户选择的选项保持为磅或公斤来实现这一点

enum WeightUnitConverted:String {
    case kg =  "kg"
    case pounds = "pound"
    case none = ""

}


var weightUnitConvertedValue: WeightUnitConverted =  WeightUnitConverted.kg
每当用户更改测量类型时,必须更改此
weightUnitConvertedValue
。在此之前,您可以转换这些值

像这样,我有了
MVVM

    self.viewModel.updateWeightUnit(string: self.weightUnit[selectedRow]) // Like kg or pound, So self.viewModel.weightUnit = "kg"

    self.viewModel.updateWeight(string: self.viewModel.convertWeightValues())
    self.txtWeight.text = self.viewModel.weight
    self.viewModel.weightUnitConvertedValue = WeightEntryViewModel.WeightUnitConverted(rawValue: self.viewModel.weightUnit)!
下面是
convertWeightValues()


我知道实现某人的代码会让你有点困惑请问我你有什么疑问

我是否可以愤世嫉俗地猜测44.09是四舍五入的,所以看起来更令人印象深刻,提升了45磅而不是44磅:)?如果它是如此简单,那么你总是可以向上舍入到下一个整数,如果不是,那么你将需要一些健身房重量的换算表。@JoakimDanielson不,我真的不想开始向上或向下舍入值,因为这样我可能会得到不一致的结果。翻译表看起来越来越像我可能必须实现tbh的解决方案……我知道所有这些,你仍然不理解我的问题。在健身房里,酒吧的重量是20公斤,但以磅计是45磅。如果我在你的函数中输入20kg,它会吐出44lbs,这是错误的,因为它被1lbs关闭了…@Tunds没有办法做到这一点,除非有第三方对它进行了研究,并提供API或示例代码,否则你必须手动执行此操作,就像你可以创建可用权重数组并返回转换值的最近值一样。您还可以创建提供最新重量单位的API
func convertWeightValues() -> String {
    // We need to convert to pounds 
    if weightUnit.lowercased() == "pound" && weightUnitConvertedValue == .kg {
        let punds = convertKGtoPounds()
        return punds > 0 ? punds.asNumber : ""
    } else if  weightUnit.lowercased() == "kg" && weightUnitConvertedValue == .pounds {
                // We need to convert to KG 

        let kg = convertPoundsToKG()
        return kg > 0 ? kg.asNumber : ""
    }
    return self.weight //No need to change so return current weight 

}