4

iOS 开发新手,我只是为初学者制作一个小工资类型的计算器。我正在探索不同的功能,包括在法国和其他非英语母国提供该应用程序。

但是,由于我的应用程序严重依赖计算其中包含小数点的数字,我想知道如果使用逗号作为小数点,iOS 是否会计算该数字,因为像法国这样的国家使用这种表示法:

澳大利亚/美国/其他国家:

12.5 * 15.8 = 197.5

法国/其他国家:

12,5 * 15,8 = 197,5

我几乎在问a)如果插入逗号而不是小数点,它是否仍会在本地设备上计算,并且b)如果没有,我应该在我的应用程序中包含什么代码以便它可以计算这个符号?(请注意,我不是要求逗号作为分隔符,而是相当于小数点。)

先感谢您!

4

3 回答 3

2

实际上,iOS 内置了一个方便的类来处理数值的本地化。它被称为NSNumberFormatter并且它特别具有-setDecimalSeparator:方法。

于 2012-05-29T06:27:17.667 回答
1

在使用该图之前,您应该通过将其转换为 NSNumber 来“规范化”它。就是这样:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];    
NSNumber *myNumber = [formatter numberFromString:@"197.5"];

这是正确的做法,使用这种方法会考虑到区域偏好、逗号分隔符等。

此时,myNumber 可以用作小数、浮点数、整数等。

float myFloat = [myNumber floatValue];
于 2012-05-29T06:51:52.830 回答
1

当使用逗号而不是小数点时,我的 iOS 应用程序会计算数字吗?

是的。只要您使用NSNumberFormatter.

我想知道如果使用逗号作为小数点,iOS 是否会计算该数字,因为像法国这样的国家使用这种表示法......

有关如何格式化数字和日期等信息由NSLocale班级管理。NSNumberFormatter使用当前语言环境来确定如何解释和显示数字,因此当您使用该-numberFromString:方法时,格式化程序将使用适当的小数分隔符。使用 . 生成数字的字符串表示时也是如此-stringFromNumber:

出于您的目的,您可能不必担心语言环境。只需使用数字格式化程序来解释输入并生成输出,格式化程序将使用适合用户的语言环境。但是,如果您希望您的应用程序提供本地化为用户语言或地区的信息,您可以使用该-setLocale:方法设置数字格式化程序以使用特定的语言环境。

于 2012-05-29T07:46:16.967 回答