Dou*_*ith 0 floating-point objective-c ios
我在Objective-C中有以下代码,将秒数(int)转换为"x小时y分钟z秒"形式的日期字符串.8812秒应该返回2小时26分52秒,但它返回2小时26分51秒.
这是麻烦的线:
float timeInSeconds = (60 * ((((seconds / 3600.0) - (seconds / 3600)) * 60.0) - (int)(((seconds / 3600.0) - (seconds / 3600)) * 60.0)));
Run Code Online (Sandbox Code Playgroud)
如果我这样,结果为52.0 NSLog.但是,如果我这样做:
int timeInSeconds = (int)(60 * ((((seconds / 3600.0) - (seconds / 3600)) * 60.0) - (int)(((seconds / 3600.0) - (seconds / 3600)) * 60.0)));
Run Code Online (Sandbox Code Playgroud)
我得到51 NSLog.为什么呢?
以下代码将时间间隔转换为小时/分钟/秒而不使用浮点数,因此不会出现舍入问题或精度损失:
int numberOfSeconds = 8812; // Your value as an example
int tmp = numberOfSeconds;
int seconds = tmp % 60;
tmp /= 60;
int minutes = tmp % 60;
tmp /= 60;
int hours = tmp;
NSLog(@"%d:%02d:%02d", hours, minutes, seconds);
// Output: 2:26:52
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |