Iphone 单位转换库-目标C

Iphone 单位转换库-目标C,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,有人知道使用Objective-C的好单位转换库吗?我正在开发的一个小应用程序的一部分要求我拿两个待售商品,比较它们的价格。这意味着,为了进行有效的比较,我必须将数量转换为基本单位 例如,如果我有一件商品可以以每品脱1美元的价格购买,另一件每加仑3美元,我需要能够将它们转换为一个通用的基本单位 与其重新发明轮子,有没有一个图书馆可以为我做基本单位转换 谢谢 编程库的主要目的是将通用的、可重用的代码抽象到一个更高级别的单元中,在这个单元中您不必关心细节。但这是一个细节可能对您的项目很重要的领域 对

有人知道使用Objective-C的好单位转换库吗?我正在开发的一个小应用程序的一部分要求我拿两个待售商品,比较它们的价格。这意味着,为了进行有效的比较,我必须将数量转换为基本单位

例如,如果我有一件商品可以以每品脱1美元的价格购买,另一件每加仑3美元,我需要能够将它们转换为一个通用的基本单位

与其重新发明轮子,有没有一个图书馆可以为我做基本单位转换


谢谢

编程库的主要目的是将通用的、可重用的代码抽象到一个更高级别的单元中,在这个单元中您不必关心细节。但这是一个细节可能对您的项目很重要的领域

对单位转换进行数学运算需要在精度和性能之间进行大量权衡。如果使用本机浮点类型,则需要避免将非常大的数字添加到非常小的数字中的情况:小的数字可能会完全消失。如果使用自定义数字表示,数学运算速度将慢一个数量级,这可能是问题,也可能不是问题,这取决于应用程序的数学运算量

此外,如果您知道您所处的环境,那么选择“公共基本单位”进行比较要容易1000倍。举个例子,看起来品脱、盎司、加仑甚至升都有意义。但是,如果您使用的是兆升,那么将所有内容转换为升的库可能会失去很多精度。该库要么需要选择一个默认值,并且不太通用,要么允许更改公共单元,这将使其更加复杂(因此容易出现错误)


因此,虽然我不能权威性地回答您的问题,也不能说不存在这样的库,但这就是为什么我认为您还没有找到一个库。

如果您有少量的转换,您最好自己进行转换。您可以使用直接换算系数(品脱->加仑,而不是品脱->升->加仑),而不必转换为基本单位并返回

如果您可以连接到python,那么有许多可用的库。有两个


如果你有互联网连接,你也可以让谷歌来做这项工作,尽管查询可能有一个最大限制。

我刚刚把我的Objective-C单位转换库推到GitHub:。看看HHUnitConverter MacOSX示例,了解如何使用它。

我编写了一个名为的Objective-c度量单位库。它做的不仅仅是基本的转换,例如它处理单位的乘法。看看吧

就是你要找的。此库在iOS开发人员中非常流行。可从以下网址获得:


它提供了物理量的测量单位,并简化了对物理量的操作。单位转换是非常精确和直接的过程。您可以通过立即添加自己的单位轻松扩展它

你在任何语言中见过这样的事吗?我甚至不知道如何以一种普遍可重用的方式编写这样一个库,除了有一个文件,它只是一个常量列表。@benzado:这种东西已经存在了:HP28S计算器对几乎所有已知的物理单位、单位组合(例如,“m/s”)加上所有乘法因子(“kHz”、“mm”)都有这个功能。你甚至可以定义自己的单位。简单到:
1“$/pt”“$/gal”转换
当有疑问时转换为moles@mouviciel这是一个计算器,而不是一个编程库。@ BANADADC++有很多单位转换库。它们在编译时强制执行正确的用法。非常可怕。你不会在目标C中找到这样的东西,但是如果你想使用ObjeC++,你可以玩。Python和谷歌在iOS上并不实用。很好,苹果确实摆脱了开发者协议的“3.3.1”部分,所以这是可能的。我认为缺少一个好的库是因为较新的语言(java/python)更好地支持开箱即用的非常大/精确的数字。右图:可能,但不实用。对于移动设备来说,这两种方法都是非常耗费资源的,加上谷歌需要网络连接,因为你所做的只是查表和乘法运算。Cocoa有NSDecimalNumber,如果你想要大的/超精确的数字的话。您需要做的是添加一些常见的默认转换。您还可以让它解析/识别SI前缀和单位,这样
[[HHUnitConverted new]convertString:@“1500 m”toUnit:@“mi”]
就可以直接使用了。