Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSNumberFormatter防止小数_Ios_String Formatting_Nsnumberformatter - Fatal编程技术网

Ios 使用NSNumberFormatter防止小数

Ios 使用NSNumberFormatter防止小数,ios,string-formatting,nsnumberformatter,Ios,String Formatting,Nsnumberformatter,我有一个NSNumberFormatter,我正试图使用它从NSNumber生成一个整数GBP(£)。不管我用哪种咒语,我总是能得到小数点后两位。我的代码是: NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease]; [fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle]; [fmtCurrency setGeneratesDe

我有一个
NSNumberFormatter
,我正试图使用它从
NSNumber
生成一个整数GBP(£)。不管我用哪种咒语,我总是能得到小数点后两位。我的代码是:

NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease];
[fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle];
[fmtCurrency setGeneratesDecimalNumbers:FALSE];
[fmtCurrency setCurrencyCode:@"GBP"];
[fmtCurrency setCurrencySymbol:@"£"];
txtTotal.text = [fmtCurrency stringFromNumber: result.Bill ]; // this is an NSNumber

您需要从中提取。

我想您需要使用零调用setMaximumFractionDigits

NSNumberFormatter *fmtCurrency = [[[NSNumberFormatter alloc] init] autorelease];
[fmtCurrency setNumberStyle: NSNumberFormatterCurrencyStyle];
[fmtCurrency setGeneratesDecimalNumbers:NO];
[fmtCurrency setCurrencyCode:@"GBP"];
[fmtCurrency setCurrencySymbol:@"£"];

NSNumber* myNumber = [NSNumber numberWithFloat:12.34];
NSString* myString = [fmtCurrency stringFromNumber:myNumber];
NSLog( @"the number is %@", myString );

[fmtCurrency setMaximumFractionDigits:0];
myString = [fmtCurrency stringFromNumber:myNumber];
NSLog( @"now it's %@", myString );  


2011-07-25 01:05:39.823 FormatterTest[841:707] the number is £12.34
2011-07-25 01:05:39.824 FormatterTest[841:707] now it's £12

你可以试试下面的方法

[fmtCurrency setGeneratesDecimalNumbers:NO];
[fmtCurrency setMaximumFractionDigits:0];


按照@Praveen

的建议,从
NSNumber
中获取
intValue
,您可以删除所有NSNumberFormatter(非常密集),只需执行以下操作:

txtTotal.text = [NSString stringWithFormat:@"£%d", result.Bill.intValue];

将字符串格式设置为两位小数。。。(是我正在寻找的)改编

            float distance = //distance with many decimals...;

            NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
            [numberFormatter setMaximumFractionDigits:2];

            //new distance with two decimals
            NSNumber* myNumber = [NSNumber numberWithFloat:distance];
祝你好运

    let formatter = NumberFormatter()
    formatter.maximumFractionDigits = 0

我认为获取intvalue将删除小数部分谢谢,通过将minimumFractionDigits和maximumFractionDigits设置为零,我得到了我需要的。