C++负数小数如何不按四舍五入保留两位小数。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#include <iostream>
double foo(double n)
{
bool sign = n < 0;
if (n < 0) n = 0 - n;
n = ((int)(n * 100.0)) / 100.0;
if (sign) n = 0 - n;
return n;
}
int main()
{
double d1 = -1.2345;
double d2 = -1.6543;
std::cout << foo(d1) << " " << foo(d2) << endl;
}
输出
-1.23 -1.65
参考:
http://codepad.org/nVwybsKz
因为负数取整是取不大于它的最大的整数,比如-1.2取整是-2
所以先用0-n求下绝对值。