gpt4 book ai didi

ios - NSNumberFormatter 的问题

转载 作者:行者123 更新时间:2023-12-01 19:02:52 27 4
gpt4 key购买 nike

我正在开发一个适用于 double 的计算器应用程序,然后当您按下等于时,操作是使用 double 完成的,然后切换到 NSNumberFormatter。我的问题是当用户想要在屏幕上的答案中添加(或 -、/、*)一个数字时。如果屏幕上的数字没有逗号,一切正常,如果屏幕上的数字有逗号,我会得到一个随机数而不是正确答案。有什么建议么?

这是我的等号按钮代码。我对每个操作都有相同的代码。请原谅我可怕的命名

还有test.firstnumbers是一个字符串,用于存储用户输入第二组数学问题之前的数字

    double number = [test.firstNumbers doubleValue];

double otherNumber = [self.label.text doubleValue];

double answer = number + otherNumber;

NSNumberFormatter *finalAnswer = [[NSNumberFormatter alloc]init];

[finalAnswer setNumberStyle:NSNumberFormatterDecimalStyle];

self.label.text = [finalAnswer stringFromNumber:[NSNumber numberWithDouble:answer]];

最佳答案

double otherNumber = [self.labelTwo.text doubleValue];



您永远不想使用显示结果的 View 作为数据的存储。这违反了 MVC 范式,而且通常是一个糟糕的计划。您应该将显示中的数字存储在数据模型中(即使该“模型”与 View Controller 中的实例变量一样简单)。除其他好处外,这避免了将数字转换为文本然后再转换回数字的需要,因此完全避免了逗号问题。

查看问题的直接原因,您使用的是 NSString 的 -doubleValue方法将字符串转换为数字,但使用数字格式化程序将数字转换为字符串。如您所见,两者并不完全互补。使用数字格式化程序进行两种转换,你会有更好的运气。但是,同样,您真的不应该使用 View 来保存操作数。

关于ios - NSNumberFormatter 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com