C++负数小数如何不按四舍五入保留两位小数

问题描述:

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求下绝对值。