Tag: nsnumberformatter

NSNumberFormatter千分隔符和尾随零

我的帐户数组中有一个值为8500.00的对象。 我想显示为8,500.00,但是当我试图这样做,并打印到控制台它将返回null。 有任何想法吗? 应用程序委托 NSArray *balance = [[NSArray alloc] initWithObjects:@"120.50", @"8500.00", nil]; //视图控制器 // Setup number formatter NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; NSNumber *balance = [[appDelegate.accounts objectForKey:@"Available Balance"] objectAtIndex:indexPath.row]; NSLog(@"%@", balance); // Prints 8500.00 NSLog(@"%@", [formatter stringFromNumber:balance]); // Prints null

使用NSNumberFormatter在十进制后生成带尾随零的数字

在Swift中,你将如何创build一个NSNumberFormatter来保存十进制(12.000)后面的零,同时生成一个适合当前语言环境的数字? 我目前的代码和示例输出: let formatter = NSNumberFormatter() formatter.numberStyle = .DecimalStyle formatter.locale = NSLocale.currentLocale() formatter.maximumFractionDigits = 10 var doubleNumString = "12.0" println(formatter.numberFromString(doubleNumString)) //in English it prints 12, want it to print 12.0 var doubleNumString = "12.000" println(formatter.numberFromString(doubleNumString)) //prints 12, want it to print 12.000 var doubleNumString = "12.125" println(formatter.numberFromString(doubleNumString)) //prints 12.125 as expected var doubleNumString = "1234" […]

无法在iOS中使用NSNumberFormatter进行货币转换

我有一个UITextField从我的应用程序中的用户接收数字input。 然后在我的shouldChangeCharactersInRange委托方法中使用NSNumberFormatter将此文本字段的值转换为货币格式。 当我input号码“12345678”时,号码被正确地转换为$ 123456.78(这些号码一次input一位数,直到这一点,一切正常)。 但是,如果在此之后input另一个数字(例如9),而不是显示“1234567.89”,则会显示数字“1234567.88”。 如果在此之后input另一个数字,则会在此之后input完全不同的数字(我正在使用应用程序中的数字键盘input数字,下面是我的代码: NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]]; textField.text = modifiedValue; 导致这种不寻常的转换的线是这样的: modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]]; 任何人都可以看到这是为什么?

NSNumberFormatter货币在iOS 5.1和6.x中以不同的方式显示

我目前正在开发一个应用程序,必须显示货币依赖于一定的文化,我的代码是: NSLocale* myLocale= [[NSLocale alloc] initWithLocaleIdentifier:myCurrency]; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; [formatter setLocale:myLocale]; [formatter setGroupingSize:3]; [formatter setAlwaysShowsDecimalSeparator:NO]; [formatter setUsesGroupingSeparator:YES]; NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithFloat:myNumber]]; myNumber = 1450.79 myCurrency = @“es-ES”(或@“es_ES”)iOS 5.1:“1.450,79”iOS 6.0:“1.450,79€” myCurrency = @“en-US”(或@“en_US”)iOS 5.1:“$ 1,450.79”iOS 6.0:“$ 1,450.79” myCurrency = @“de-DE”(或@“de_DE”)iOS 5.1:“1.450,79€”iOS 6.0:“1.450,79€” 据我所知,iOS在5.1中没有es-ES(西class牙)的语言环境?

NSNumberFormatter paddingPosition不起作用

我有这样一个格式化的货币值。 $99.99 。 我需要在货币符号和$ 99.99之间有一个空格。 从这个答案我发现我需要使用填充。 然而,我正在尝试不工作。 private var currencyFormatter: NSNumberFormatter = { let formatter = NSNumberFormatter() formatter.numberStyle = .CurrencyStyle formatter.paddingPosition = .AfterPrefix return formatter }() var price: Float = 99.99 let s = currencyFormatter.stringFromNumber(price) print(s!) // I still get $99.99 也许我错过了什么?

如何只显示与NSNumberFormatter的前两位数字?

我有一个例子1329094的数字。我只想得到我所看到的前两位数字13 我创buildNSNumberFormatter像 func setReceivedChart(description: [String], value: [Double]) { var descriptionString: String! var formatterNumber: NSNumber! var chartDataEntryArray = [ChartDataEntry]() for item in 0..<description.count { let chartEntry = ChartDataEntry(value: value[item], xIndex: item) chartDataEntryArray.append(chartEntry) descriptionString = description[item] formatterNumber = value[item] } let dataSet = LineChartDataSet(yVals: chartDataEntryArray, label: "") dataSet.drawCircleHoleEnabled = false dataSet.drawCirclesEnabled = true // change dataSet.drawCubicEnabled = […]

iOS:删除NSDecimalNumber中的千位分隔符以进行编辑

我有十进制数字存储在我的数据库中。 我根据用户的区域显示它们: – (NSString *) getLocalizedCurrencyStringWithDigits { NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [numberFormatter setLocale:[NSLocale currentLocale]]; [numberFormatter setMinimumFractionDigits:2]; [numberFormatter setMaximumFractionDigits:2]; NSString *numberString = [numberFormatter stringFromNumber:self]; return numberString; } 我在可编辑的文本框中显示这些string。 所以如果用户开始编辑字段,我想删除千位分隔符。 否则(在我的国家),我input1'000.55,然后它不能识别“'”,只保存一个1.这是我的function来parsing文本字段,并在视图控制器这个确切的返回值将被保存到数据库: + (NSDecimalNumber *) getUnLocalizedDecimalNumberWithString:(NSString *)currencyString { NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [numberFormatter setLocale:[NSLocale currentLocale]]; [numberFormatter setMinimumFractionDigits:2]; [numberFormatter setMaximumFractionDigits:2]; BOOL isDecimal […]

如何将逗号和小数位dynamic地放入我的UITextField中?

我想在像4.65这样的“11000”和465中的小数点('。')中添加一个','。 我写了这个逗号: – (BOOL) textField: (UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string { NSString *unformattedValue; NSNumberFormatter *formatter; NSNumber *amount; switch ([textField tag]) { case 102: unformattedValue = [textField.text stringByReplacingOccurrencesOfString:@"," withString:@""]; unformattedValue = [unformattedValue stringByReplacingOccurrencesOfString:@"." withString:@""]; formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setGroupingSeparator:@","]; [formatter setDecimalSeparator:@"."]; amount = [NSNumber numberWithInteger:[unformattedValue intValue]]; textField.text = [formatter stringFromNumber:amount]; […]

为轴标签核心图绘制长数字

我正在尝试为我的轴标签格式化“k”forms的长数字。 例如; 如果我有10000个 ,我希望它显示为10k 。 我已经试图遵循这个答案。 但我无法得到格式化的数字。 我还需要做些什么? 请指导我 谢谢。 编辑: HumanReadableFormatter.h @interface HumanReadableFormatter : NSNumberFormatter @end HumanReadableFormatter.m 我已经修改了上面链接的代码来满足我的要求。 #import "HumanReadableFormatter.h" @implementation HumanReadableFormatter static const char sUnits[] = { '\0', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y' }; static int sMaxUnits = sizeof sUnits – 1; -(NSString *) stringForObjectValue:(id)obj { int multiplier = 1000; […]

setMaximumFractionDigits的问题

setMaximumFractionDigits不能与下面的代码一起使用。 NSString *input=@"80.90"; NSNumberFormatter *numberFormatter=[[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [numberFormatter setMaximumFractionDigits:2]; NSNumber *number=[numberFormatter numberFromString:input]; 数字转换为80.90000000000001。 但我已经把限制在2位小数。 那么,我怎样才能得到80.90的数字,而不是80.90000000000001