使用' cout'打印值时出现问题。我希望看到价值" 9223372036854775807"在控制台,但我只是继续得到" 9223372036854775800"负值也是如此。我还希望用户输入此值作为最大值,并希望保留小数位。
---------------这些将是最小值和最大值
double al = scnd_num_min(num1, Oprt);
al = al * (-1);
double ah = scnd_num_max(num1, Oprt);
--------------这就是我打印这些值的地方
cout << "Please enter a value within a range of: " << "\n" << fixed << al;
cout << " and " << ah << " : ";
这是获得价值的一个功能:
double scnd_num_max(double num1, char Oprt)
{
double max1 = 9223372036854775807;
double max2 = 9223372036854775806;
double min1 = -9223372036854775806;
switch(Oprt)
{
case '+':
if (num1 <= 0)
return max1;
else
return (max1 - num1);
case '-':
if (num1 >= -1)
return max1;
else
return ((max1 - (num1 * (-1)))+1);
case '*':
if ((num1 < min1) || (num1 > max2))
return 1;
else if (num1 == 0)
return max2;
else if (num1 > 0)
return (max2 / num1);
else
return (max2 / (num1 * (-1)));
case '/':
return max2;
}
}
完全相同的是负值。
答案 0 :(得分:0)
double是64位宽,但它不能保存long long(也是64位)可以容纳的每个值,因为浮点数由符号位,指数和尾数组成。 double的尾数是52bit宽,所以你可以确定每个52bit(实际上是53个因为符号位)宽整数可以在不损失精度的情况下存储,其余的你可能会失去精度。
编辑:顺便说一下,double max是1.79769e + 308,见this link