2012-03-08 34 views
13

Tôi có thể chuyển đổi một NSNumber cụ thể thành tiền tệ bằng cách sử dụng NSNUmberFormatter. Biểu tượng $ biểu thị của nó, các số được phân cách bằng dấu ",", v.v.
Nhưng tôi không muốn hiển thị xu.
Ví dụ nó hiển thị $ 537,335.32
Tôi chỉ muốn hiển thị $ 536.335
Tôi đang viết đoạn mã sau:iOS - Hiển thị đơn vị tiền tệ không có xu bằng cách sử dụng NSNumberFormatter

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

NSDictionary* tempDict = [self.displayDict objectForKey:kConservative]; 
conservativeHP.text = [currencyFormatter stringFromNumber:[tempDict objectForKey:kHomePrice]]; 

Làm thế nào tôi nên tạo NSNumberFormatter hoặc làm điều gì đó để kết quả sẽ không có "thập phân "

Trả lời

0

Trước khi thêm số cho định dạng, thay đổi nó để int để tránh các số thập phân, một cái gì đó như thế này:

float myValue = 543.32; 

NSNumber myNumber = [NSNumber numberWithInt: (int)myValue)]; 

Bạn sẽ thoát khỏi phần thập phân!

+0

Cảm ơn, đây là giải pháp tốt nếu tôi tạo NSNumber. Nhưng vấn đề là tôi sẽ lấy dữ liệu từ máy chủ mà tôi không thể thay đổi. Chỉ trong khi hiển thị, tôi muốn cắt xu. – Satyam

+1

Bạn không cần phải thay đổi giá trị ban đầu của bạn, chỉ cần sao chép số trong một biến int, tôi không thấy vấn đề –

33

Sử dụng maximumFractionDigits thiết:

NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[currencyFormatter setMaximumFractionDigits:2]; 

Bạn có thể điều chỉnh giá trị cho phù hợp. Sử dụng 2 sẽ giới hạn kết quả thành hai chữ số, cho câu hỏi này giá trị là 0 nên làm điều đó.

+1

Là một sang một bên để trả lời này, thêm [currencyFormatter setMinimumFractionDigits: 0]; sẽ giúp bạn có được những con số làm tròn số thập phân khi bằng không. Trong trường hợp của tôi, tôi muốn hiển thị $ 126k, hoặc $ 1.25M. Điều này cho phép tôi để có được điều đó. –

0

Khi bạn đi để hiển thị nó chỉ làm điều này

Mylabel.text = @"%.2f", mynumberwithcents; 

này chỉ hoạt động nếu biến mynumberwithcents hoặc là một phao hoặc một đúp ...

-1

Swift 3:

currencyFormatter.maximumFractionDigits = 0 
0
In case of using category: 

    .h 
     #import <Foundation/Foundation.h> 

     @interface NSString (Price) 

     + (NSString *)updateStringToPriceWithValue:(NSNumber *)value; 

     @end 
    .m 
     #import "NSString+Price.h" 
     @implementation NSString (Price) 

     + (NSString *)updateStringToPriceWithValue:(NSNumber *)value 
     { 
      NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
      [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

      NSInteger minimumFractionDigits = [formatter minimumFractionDigits]; 
      NSInteger maximumFractionDigits = [formatter maximumFractionDigits]; 

      NSString *formatted = [formatter stringFromNumber:value]; 
      NSLog(@"%@", formatted); 

      [formatter setMinimumFractionDigits:minimumFractionDigits]; 
      [formatter setMaximumFractionDigits:maximumFractionDigits]; 



      return formatted; 

     } 
1

Đây là giải pháp trong swift 3

let formatter = NumberFormatter() 
    formatter.numberStyle = .currency 
    //formatter.locale = NSLocale.current 
    formatter.currencySymbol = "" //In case you do not want any currency symbols 
    formatter.maximumFractionDigits = 0 

Đặt maximumFractionDigits thành 0 sẽ không hiển thị bất kỳ giá trị thập phân hoặc phân số nào.

Các vấn đề liên quan