2013-09-28 45 views
2

我有三个视图控制器的应用程序。首先是UIViewController与三个UITextField的用户放置一些数字。这些数字作为字符串属性存储到我的CoreData实体中。小数点不能用逗号做数学运算。需要点

其次是UITableView,我从CoreData显示我的存储数据为新的单元格。 第三个是详细的UIViewController,我向用户显示他以前插入的所有数字。 问题是当我在textField小数点上设置时,用户有数字和逗号,但我的函数需要带点的数字来进行双精度计算。 使用逗号我不能使数学函数为[.....] * [...] = ....,因为它不起作用。

任何想法我可以弄明白吗? 我可以简单地将该逗号更改为点吗?

我有这样的代码:

NSNumberFormatter*nf = [[NSNumberFormatter alloc]init]; 
[nf setNumberStyle:NSNumberFormatterDecimalStyle]; 

double result = [myString doubleValue] * [myOtherString doubleValue]; 

回答

6

你要根据用户的语言环境的十进制键盘有逗号或句号(点)。这样用户可以按照他们习惯的输入值。为了让您对数值进行数学运算,您需要使用NSNumberFormatter将输入的字符串转换为double值。一旦你这样做,你的数学公式将起作用。如果字符串是用户输入的,请勿使用doubleValuefloatValueNSString转换为doublefloat。始终使用NSNumberFormatter正确处理用户的区域设置。

根据添加到问题中的代码进行更新。

您不使用数字格式化程序。你正在做我说的不要做的事。你的代码更改为:

double firstValue = [[nf numberFromString:myString] doubleValue]; 
double secondValue = [[nf numberFromString:myOtherString] doubleValue]; 
double result = firstValue * secondValue; 
+0

我尝试做setNumberStyle:NSNumberFormatterDecimalStyle但它不起作用。我怎样才能做到这一点? – Mayo323

+0

是的,它的工作原理。发布代码(用代码更新您的问题),尝试将输入的文本转换为“double”或“float”。 – rmaddy

+0

@ Mayo323根据您发布的代码查看我更新的答案。 – rmaddy

-2

解决方案很简单:

1. Go to Settings > General > International > Regional Format 
    2. Now select "United States" 

现在运行你的应用程序,看到点而不是十进制垫键盘逗号(,)()。

+2

“美国”并不是我们世界上唯一的默认设置。 –

+0

是的,并确保你在应用程序的帮助页面上写下这个“有用的”提示! –

+0

对我来说它显示由于地区的逗号是法国。我改变了它,然后dot代替了逗号。所以它的地区具体。 –