การกำหนดจำนวนเลขทศนิยมสำหรับสกุลเงิน

บนไอโฟน:

Using the US locale, a currency looks like this: $1,234.56
Using the UK locale, a currency looks like this: £1,234.56
Using the German (Germany) locale, a currency looks like this: 1.234,56 €

and finally, a Japanese currency: ¥1,234

สกุลเงินญี่ปุ่นไม่มีทศนิยม และสิ่งนี้มีผลกระทบต่อแป้นพิมพ์แบบกำหนดเองของฉันอย่างมาก ฉันกำลังพยายามค้นหาวิธีการในกรอบงาน Cocoa-touch ซึ่งจะบอกฉันว่ามีทศนิยมกี่ตำแหน่งในสกุลเงินเฉพาะ - ค่าฮาร์ดโค้ดของฉันที่ 2 ไม่ได้ทำให้ฉันยุติธรรม :(

ใครสามารถช่วยได้บ้าง?


person rein    schedule 12.07.2009    source แหล่งที่มา


คำตอบ (4)


คุณควรจะสามารถใช้วัตถุCFNumberFormatterเพื่อรับข้อมูลที่คุณต้องการ โดยเฉพาะคุณสามารถใช้ CFNumberFormatterGetDecimalInfoForCurrencyCode:

CFStringRef localeIdent = CFSTR("JPY");

int numDecimals;
double rounding;
BOOL result = CFNumberFormatterGetDecimalInfoForCurrencyCode(localeIdent, &numDecimals, &rounding);

ฉันหวังว่ามันจะช่วยได้

person RichardCase    schedule 15.07.2009

ฉันไม่ได้ตั้งโปรแกรมใน Cocoa มานานแล้ว แต่จากเอกสารสำหรับ NSNumberFormatter มีฟังก์ชันที่เรียกว่า 'currencyDecimalSeparator' - อย่างน้อยก็อาจบอกคุณได้ว่าสกุลเงินมีสกุลเงินใดสกุลเงินหนึ่งเลย ซึ่งอาจเป็นจุดเริ่มต้น

person Steve Mc    schedule 14.07.2009

บริษัททางการเงินจะดูแลรักษาฐานข้อมูลประเภทนี้ คุณอาจซื้อข้อมูลหรือนำเข้าจากแหล่งข้อมูลออนไลน์ได้

โปรดทราบ: บางสกุลเงินต้องมีทศนิยมสามหรือสี่ตำแหน่ง ดูตัวอย่างที่ http://www.londonfx.co.uk/ccylist.html .

person Nat    schedule 12.07.2009
comment
NSNumberFormatter นั้นยอดเยี่ยมสำหรับสิ่งนี้ ฉันไม่มีปัญหากับการจัดรูปแบบ เนื่องจากฟอร์แมตเตอร์จัดการทุกอย่างให้ฉันแล้ว ฉันไม่รู้ว่าจะกำหนดได้อย่างไรว่าฉันต้องจัดสรรทศนิยมกี่ตำแหน่ง ขอบคุณสำหรับลิงค์ - สิ่งที่น่าสนใจ - person rein; 12.07.2009
comment
โดยหลักการแล้ว ฉันต้องการผูกจำนวนทศนิยมกับอะไรก็ตามที่เข้ารหัสไว้ในฟอร์แมตเตอร์ ไม่เช่นนั้นสิ่งต่างๆ อาจผิดพลาดได้ - person rein; 12.07.2009

ฉันมีปัญหาที่คล้ายกัน แต่คำตอบข้างต้นไม่ได้แก้ปัญหาของฉันจริงๆ

ฉันลงเอยโดยใช้วิธี maximumFractionDigits บน NSNumberFormatter ซึ่งให้ 0 สำหรับภาษาญี่ปุ่น ตรวจสอบให้แน่ใจว่าคุณใช้ NSNumberFormatterCurrencyStyle สำหรับฟอร์แมตเตอร์ ไม่เช่นนั้นคุณจะเห็นตำแหน่งทศนิยมในตัวฟอร์แมตเตอร์อื่นๆ

    NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
    [currencyFormatter setLocale:[NSLocale currentLocale]];
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

    NSLog(@"Number of decimal places %i", [currencyFormatter maximumFractionDigits]);
person Joe Regan    schedule 01.06.2011