Objective-C:如何格式化浮点值以仅显示小数,没有完整数字或小数点?

Posted

技术标签:

【中文标题】Objective-C:如何格式化浮点值以仅显示小数,没有完整数字或小数点?【英文标题】:Objective-C: How Can I Format a float value to Only Display The Decimal, Without The Full Figure, or Decimal Point? 【发布时间】:2014-05-05 14:24:53 【问题描述】:

有很多问答只限于小数点后 2 位,以至于过饱和。

但是,我想将我的浮点数格式化为只获取十进制值。

我正在做一个秒表,目前有这个......

@implementation HudLayer

    CCLabelTTF *_label; 
    float timer;


-(void)update:(ccTime)delta  if (_isTimerActive)
    
        timer += delta;

        NSNumber *theDouble = [NSNumber numberWithDouble:timer];
        float miliseconds = timer;
        int inputSeconds = [theDouble intValue];
        int hours =  inputSeconds / 3600;
        int minutes = ( inputSeconds - hours * 3600 ) / 60;
        NSString *theTime = [NSString stringWithFormat:@"%.2d:%.2d:%.2f", hours, minutes, miliseconds];

        [_label setString:[NSString stringWithFormat:@"Time: %@", theTime]];
    

但是,我遇到的问题是计时器读出的标签上显示了完整的秒数...

00:14:865.35

应该只是:

00:14:05.35

HH:MM:SS.ms

我的第一个想法是从输出的浮点数中去掉小数,然后像我做小时和分钟一样手动计算秒...

有什么建议吗?谢谢...

【问题讨论】:

你在标签上使用了 NSNumberFormatter。还有比浮点数更好的处理精确时间的方法...... 你想收到什么而不是“00:14:865.35”? 编辑问题以显示所需的输出*** @user3601508 你在“计时器”中有什么?秒还是毫秒? 【参考方案1】:

尝试关注

timer += delta;

float float_seconds = timer;
int seconds = float_seconds;
int hours = seconds / 3600;
int minutes = seconds / 60 % 60;
NSString *theTime = [NSString stringWithFormat:@"%.2d:%.2d:%05.2f", hours, minutes, float_seconds - ( seconds / 60) * 60];
NSLog(theTime);

[_label setString:[NSString stringWithFormat:@"Time: %@", theTime]];

【讨论】:

以上是关于Objective-C:如何格式化浮点值以仅显示小数,没有完整数字或小数点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中制作日期格式化程序以仅显示日期的年份部分?

如何格式化 mssql 日期时间列以仅在网页输入字段上显示时间?

如何重新格式化 CSV 中的日期以仅显示 MM/YYYY

检查字典中的浮点值以了解 Python 中的条件

Pandas DataFrame 到 HTML:格式化值以显示居中

计算浮点值以将整数乘以产生小于 1 的最大数