【问题标题】:Comma separated Number showing correctly on simulator but not on iPad逗号分隔的数字在模拟器上正确显示但在 iPad 上不正确
【发布时间】:2014-03-13 13:05:28
【问题描述】:

为了显示逗号分隔的数字,我将本地设置为

setlocale(LC_NUMERIC, "en_US");

然后撰写消息

char msg[100]={0};
sprintf(msg,"Reach a score %'ld.",mission.param1);
mission.msg=msg;

然后我将此消息显示为:

sprintf( msgStr,"%s",mission.msg.c_str());

_missionStatusLabel1=CCLabelTTF::create(msgStr, "MarkerFelt-Thin", 52 * _scaleY, CCSizeMake(1000 * _scaleX,0),
kCCTextAlignmentLeft);

_missionStatusLabel1->setPosition( ccp(_screenSize.width * 0.53f, _screenSize.height*0.704f) );

问题是,在模拟器上它显示正确的格式,例如 25000,它显示 25,000,但是当我在 iPad(ios7) 上运行时,它只显示 25000 而没有逗号。

我可能缺少什么?

编辑:

或者您将如何显示逗号分隔的数字?

【问题讨论】:

  • 这不是你问题的答案,但你应该避免使用像 0.704f 这样的文字,而是将它们存储在一个常量中。否则 1) 如果你想改变它,你只需要在一个地方做 2) 它赋予值一些意义(即 SCALE_VALUE 比 0.704f 更容易理解)。
  • 查看setlocale的结果(确保iPad支持en_US)
  • @DieterLücking 感谢您指出我检查了模拟器它返回 en_US 但对于 iPad 它返回 null 那么我现在该怎么办?
  • @Eklavyaa 安装或使用其他
  • 好吧,如果用户没有在他们的设备上安装它,这似乎是一个主要问题,在这种情况下,它根本不会显示逗号。

标签: c++ ios objective-c cocos2d-x


【解决方案1】:

如您所见,在上面的代码中,我使用 c++ setLocale 设置语言环境。但是此代码仅在模拟器中显示逗号,而在实际设备中未显示。所以我尝试了 NSNumberFormatter 类,一切都很完美。我从NSNumberFormatter with comma decimal separator 中挑选了代码,并封装在 c++ 接口下使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2018-12-12
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多