计算中的小数点为。要么 ,

问题描述 投票:1回答:4

如果我使用十进制数字输入数字,则十进制根据国家和地区格式而变化。 可以作为一个点“。”或者作为逗号“,” 我无法控制使用该应用的设备。 如果区域格式使用逗号,则计算出错。投入5,6与仅投入5次和56次相同。 即使我以编程方式允许两者兼而有之。并且,作为TextField中的输入。 如何在不使用数字和标点符号的情况下解决此问题,并且可能还必须提供说明以避免使用逗号“,”输入 它只是我需要的数字和小数的输入,小数点是这么好。

ios objective-c cocoa-touch numbers decimal
4个回答
-2
投票

一种方法是检查textField是否包含“,”。

如果包含,请将其替换为“。”并做所有算术运算。

无论如何,您将读取所有textFields和textViews作为NSString对象,您可以根据需要操纵输入值并对其进行转换。

同时显示结果时替换“。”用“,”使用户根据区域格式感到舒服。


9
投票

你应该使用NSNumberFormatter,因为这可以设置为处理不同的语言环境。

创建格式化程序:

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

用它:

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

如果设备的语言环境设置为语言环境,,中的小数分隔符,数字键盘将使用is和格式化程序。在那些分组分隔符将是.

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

NSNumberFormatter非常复杂,您也应该阅读Data Formatter Guide中的部分。如果你的应用确实处理了这种情况,它也知道很多货币处理(显示,而不是转换)。


0
投票

您也可以使用NSNumberFormatter的类方法

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

0
投票

识别是本地国家使用逗号作为小数点

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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.