骚然勿外
2015-01-09 20:31
采纳率: 66.7%
浏览 3.8k

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2015-01-10 02:03
    已采纳
     #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;
    }
    
    打赏 评论
  • threenewbee 2015-01-10 02:04

    输出
    -1.23 -1.65

    参考:
    http://codepad.org/nVwybsKz

    打赏 评论
  • threenewbee 2015-01-10 06:33

    因为负数取整是取不大于它的最大的整数,比如-1.2取整是-2
    所以先用0-n求下绝对值。

    打赏 评论

相关推荐 更多相似问题