我已经老了PASCAL代码帕斯卡到C:TRUNC
var i : longint;
m : double;
begin
.....
i := trunc(m);
我必须把它转换为C++代码。
这里有一个明显的一点就是写
double m;
int i;
.....
i = static_cast<int>(std::trunc(m));
但这里的问题比帕斯卡TRUNC返回整数
function trunc(
d: ValReal
):Int64;
而C++的TRUNC返回一倍。 是否有可能,例如trunc(2.3)将返回1.999999999999 和static_cast将使它1而不是2?如果是,是否正确使用不带trunc的static_cast来获取相同的pascal行为?
i = static_cast<int>(m);
听起来更像'round()'? – trojanfoe
round返回最接近的整数。在帕斯卡尔我trunc – ArmanHunanyan