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 日期时间列以仅在网页输入字段上显示时间?