如何在目标c中制作单位转换器?

时间:2011-09-29 10:23:55

标签: objective-c

我想知道在目标c中,如何制作单位转换器,特别是一个特定点:你是否需要为每个单元转换为每个其他单元的新代码块。 e.g。

米 - 英尺 米 - 厘米 米 - 英寸

然后有一个新的代码将脚转换成每个单位,然后一个用于每个单位的英寸,另一个用于每个单位的厘米等,还是有一些更简单的方法?

由于

4 个答案:

答案 0 :(得分:0)

您可以使用包含所有转换因子的表,并编写一个方法,该方法采用转换因子和要转换的值。因此,您只需要一个“代码块”。

答案 1 :(得分:0)

确实有一种更简单的方法,将您的单位和转换规则保存在文件或数据库中。在大多数情况下,您需要或多或少的简单算术来转换单位。在Unix或Linux中有程序“单元”,你可以研究源和unittab或units.tab。

答案 2 :(得分:0)

通常,所有单位转化的形式都相同:

valueInUnit1 = A * valueInUnit2 + B

B通常甚至为零(米到米,英寸到米等) - 并且仅在某些情况下非零(例如将温度从凯尔温斯转换为凯尔西斯)

您只需要为每对单位保留A和B的值列表,以便将一个单位转换为另一个单位。

请注意,您甚至可以只保留主要值(例如,从公制系统单位到其他单位)并推断其他值,因为从上面的公式中您可以明显地得出相反的结论

valueInUnit2 = (valueInUnit1 - B) / A = (1/A) * valueInUnit1 + (-B/A)

因此,一旦您拥有要转换的每对单位的值A和B的列表,您将只有一种方法可以将它们全部转换。

您可以在专用的PLIST文件中,在CoreData中的sqlite3数据库中存储值A和B的列表,...(对于使用PLIST文件的情况,可能会更容易。例如,一个NSDictionary,其键是原始单位的名称,值本身是NSDictionaries,其键是目标单位,值是A和B对...... - 这只是一个建议,而不是唯一的解决方案)

答案 3 :(得分:0)

像联合国或欧盟那样做翻译:从任何转换为​​参考,然后从参考转换为任何其他。

对于物理单位,方便的参考是international system of units