【发布时间】:2011-08-15 20:21:16
【问题描述】:
我只是想知道,如果我想将 a 除以 b,并且对结果 c 和余数都感兴趣(例如,假设我有秒数并想将其分成分钟和秒),那么最好的方法?
会不会
int c = (int)a / b;
int d = a % b;
或
int c = (int)a / b;
int d = a - b * c;
或
double tmp = a / b;
int c = (int)tmp;
int d = (int)(0.5+(tmp-c)*b);
或
也许有一种神奇的功能可以同时提供两者?
【问题讨论】:
-
以下所有答案似乎都是合理的,我想补充一点,在我看来,任何与
double(你的最后一项)的混搭似乎都是个坏主意,你最终会得到不t 排队,并且可能会在性能和可执行文件大小方面付出代价(在某些嵌入式系统上对我来说一直是个问题)。 -
第三个是坏选项:如果 tmp = 54.999999999999943157 怎么办?这就是说,老式的铸造从来都不是一件聪明的事情。