【问题标题】:How to determine if locale currency has a decimal point如何确定语言环境货币是否有小数点
【发布时间】:2015-12-08 00:49:02
【问题描述】:

objective-c 中是否有确定货币是否使用小数点(不管声明的 NSNumber 类型)?

我有多个语言环境,我使用 NSNumberFormatter(基于语言环境)设置字符串货币字符串样式,但是事先我想知道所选语言环境的货币是否使用小数点。

[_cf setLocale:
[NSLocale localeWithLocaleIndentifier:[NSString stringWithFormat:@"%@",locale]]]];
[cf setNumberStyle:NSNUmberFormatterCurrencyStyle];
NSString *value = [cf stringFromNumber:price];
return value;

【问题讨论】:

  • 您的意思是小数点而不是逗号(这是区域设置的问题,而不是货币),或者小数点而不是通常不使用小数的货币(例如日元)?
  • 正确。根据所选的语言环境,我想知道小数点(或在某些语言环境中表现得像小数点的逗号)
  • 您想要的术语是“小数分隔符”。这允许使用不同的字符来实现该目的(正如 jcaron 在他的评论中指出的,逗号是另一种常见的小数分隔符。)您是否正在查看语言环境是否使用任何小数分隔符(是或否)您是否试图弄清楚它是否专门使用句点,或者您是否正在寻找小数分隔符,无论它是什么?

标签: ios objective-c currency


【解决方案1】:

用货币样式创建NSNumberFormatter 后,询问格式化程序它有多少个小数位数。

NSInteger maxFractionDigits = cf.maximumFractionDigits;
if (maxFractionDigits == 0) {
    // this currency is an integer, not a decimal
}

日元 (¥) 就是一个例子。

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多