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.2取整是-2
所以先用0-n求下绝对值。