在计算中的小数点。 要么 ,(Decimal point in calculations as

2019-08-17 06:50发布

如果我使用十进制垫小数点的变化取决于国家和地区格式的数字输入。
可能作为一个点“” 或为逗号“”
我不拥有控制权的应用程序用于在哪个设备。
如果区域格式使用逗号计算得到错误的。 在5,6把是一样的投入只有5某些时候和56周相同的时间。
那就是,即使我以编程方式让双方。 并且,如在一个TextField输入。
如何来解决这个不使用数字的punctation垫,可能还需要发出指令,以避免与逗号投入“”
这只是数字和小数点,我需要输入小数点垫这么多漂亮。

Answer 1:

一种方法可能是检查文本字段包含“”。

如果包含,将其替换为“” 并尽一切算术运算。

正如反正你会阅读所有的文本字段和textViews为NSString的对象,你可以操纵的输入值,并根据您的需要改变它。

也同时显示结果替换“” 用“”所以要根据区域有格式的用户感到舒适。



Answer 2:

您shoudld使用NSNumberFormatter这一点,因为这可以被设置为处理不同的语言环境。

创建格式:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale currentLocale]];

用它:

NSNumber *number = [numberFormatter numberFromString: string]; //string is the textfield.text

如果设备的区域设置为一个区域,其中,在小数点分隔符, ,数字键盘将采用的是和格式化为井。 在这些分组分隔符会.

对于其他语言环境,它会反之亦然。

NSNumberFormatter是非常复杂的,你应该阅读它的部分数据格式化指南 ,太。 它也知道了不少货币的处理(显示,不转换),如果你的应用程序不处理这些。



Answer 3:

您还可以使用NSNumberFormatter的类方法

NSString* formattedString = [NSNumberFormatter 
                                 localizedStringFromNumber:number
                                 numberStyle:NSNumberFormatterCurrencyStyle];


Answer 4:

确定是当地国家使用逗号小数点

var isUsesCommaForDecimal : Bool {
    let nf = NumberFormatter()
    nf.locale = Locale.current
    let numberLocalized = nf.number(from: "23,34")
    if numberLocalized != nil {
        return true
    } else {
        return false
    }
}


文章来源: Decimal point in calculations as . or ,