【问题标题】:Preventing decimals with NSNumberFormatter使用 NSNumberFormatter 防止小数
【发布时间】:2011-07-25 07:49:19
【问题描述】:

我有一个NSNumberFormatter,我试图用它从NSNumber 生成整数英镑(英镑)。无论我尝试哪种咒语,我都会得到两位小数。我的代码是:

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

【问题讨论】:

  • 我认为获取 intvalue 将删除小数部分

标签: ios string-formatting nsnumberformatter


【解决方案1】:

我想你想用零调用 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

【讨论】:

    【解决方案2】:

    你可以试试下面的

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

    或

    按照@Praveen 的建议,从NSNumber 获取intValue

    【讨论】:

    • 谢谢,通过将 minimumFractionDigits 和 maximumFractionDigits 设置为零,我得到了我需要的东西。
    【解决方案3】:

    您需要从NSNumber 中提取intValue。

    【讨论】:

      【解决方案4】:

      斯威夫特 4

          let formatter = NumberFormatter()
          formatter.maximumFractionDigits = 0
      

      【讨论】:

        【解决方案5】:

        你可以删除所有的 NSNumberFormatter (这是相当密集的),然后这样做:

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

        【讨论】:

          【解决方案6】:

          将字符串格式化为两位小数...(我正在搜索的内容)已调整...

                      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];
          

          祝你好运

          【讨论】:

            猜你喜欢
            • 2010-10-16
            • 2016-09-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多