gpt4 book ai didi

ios - NSNumberFormatter 不接受小数点后的零

转载 作者:行者123 更新时间:2023-12-01 18:32:14 26 4
gpt4 key购买 nike

有人问过类似的问题,但我发现提供的解决方案不适用于最新的 iOS SDK,或者不完全适用于这种特殊情况。

我使用 NSNotification 调用一个方法,该方法在 UILabel 中使用分组符号格式化数字,因为它是使用按钮输入中的数字输入的。它也适用于整数和小数——只要小数点后没有输入零。例如,如果输入 2000,它会显示为 2,000,因为它输入得很好。如果输入 23.345,也显示得很好。对这些数字进行的任何计算都是正确的。但是不能输入0.0001或者0.2340007!它只是不会在小数点后附加任何零。

我从 stackoverflow 的另一篇文章中得到了原始代码的想法:

NSString *currentText = [display_ text];
currentText = [currentText stringByReplacingOccurrencesOfString:@","
withString:@""];
currentText = [currentText stringByReplacingOccurrencesOfString:@"."
withString:@"."];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
[formatter setMaximumFractionDigits:10];

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:currentText];

NSString *finalText = [formatter stringFromNumber:number];

NSString *lastChar = [currentText substringFromIndex:[currentText length] - 1];

if ([lastChar isEqualToString:@"."])
{
finalText = [finalText stringByAppendingString:@"."];
}

[display_ setText: finalText];
[formatter release];

格式化程序的参数没有多少(我已经尝试过)允许在小数点后输入零。

最佳答案

为什么要替换“。”和 ”。”?实例化 number 后,您在调试器中看到了什么?

我从未与 NSDecimalNumber 合作过,但前段时间已经在 double 中苦苦挣扎。我建议分解问题。实例化 number使用硬编码值,对其进行格式化并将其写入日志文件。如果这不起作用,请尝试下面的代码,它在我的应用程序中使用双值可以正常工作。我正在使用德语区域设置,但这不应该是重点。

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
[formatter setAllowsFloats:TRUE];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumSignificantDigits:20];
[formatter setMaximumSignificantDigits:20];
[formatter setMinimumFractionDigits:0];
[formatter setMaximumFractionDigits:5];
NSLocale* locale = [NSLocale currentLocale];
[formatter setLocale:locale];
NSNumber* number = [NSNumber numberWithDouble:1000.0123f];
myTextField.text = [formatter stringFromNumber:number];

如果您的代码确实可以工作,
  • 检查没有 O 而不是零
  • 去掉这个“.”上面提到的替换
  • 我发现设置语言环境明确解决了一些问题(很久以前无法记住细节,但您可以尝试一下)
  • 将 NSDecimalNumber 替换为 NSNumber 并将其输入双值
  • 检查您的 XIB 文件并确保您的文本字段不执行任何其他格式
  • 关于ios - NSNumberFormatter 不接受小数点后的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543189/

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