两次商店有什么
What does double store?
我将值4 *cos( fmod( acos(2.0/4.0), 2*3.14159265) )
作为double
发送到此功能,但我将输出作为
2
1k1
这里有什么问题?
void convert_d_to_f(double n)
{
cout<<n<<" ";
double mantissa;
double fractional_part;
fractional_part = modf(n,&mantissa);
double x = fractional_part;
cout<<mantissa<<"k"<<fractional_part<<'n';
}
问题在于cout
在打印时会截断并绕双倍。您可以使用iomanip
库打印所需的小数位数。
#include <iostream>
#include <cmath>
#include <iomanip>
void convert_d_to_f(double n)
{
cout<<std::fixed<<std::setprecision(20); //number of decimal places you need to print to
cout<<n<<" ";
double mantissa;
double fractional_part;
fractional_part = modf(n,&mantissa);
double x = fractional_part;
cout<<mantissa<<"k"<<fractional_part<<'n';
}
int main() {
convert_d_to_f(4 *cos( fmod( acos(2.0/4.0), 2*3.14159265) ));
return 0;
}
出于所有实际意图和目的,您的编号n
评估为2
。如果您希望它显示为1.9999999...
等。请遵循Kapil的解决方案,并将std::cout
的浮点精度设置为许多十进制位置。请记住,如果要走那条路,精度和准确性之间的区别。
话虽如此,您的void convert_d_to_f(double n)
功能正在复制std::frexp(double arg, int* exp)
的功能,并在将结果打印到屏幕后的范围内限制了范围。如果您希望在计算它们之后使用指数和曼蒂萨值,那么您可以这样做。
#include <iostream>
#include <cmath>
int main()
{
double n = 4 *cos( fmod( acos(2.0/4.0), 2*3.14159265) );
std::cout << "Given the number " << n << std::endl;
// convert the given floating point value `n` into a
// normalized fraction and an integral power of two
int exp;
double mantissa = std::frexp(n, &exp);
// display results as Mantissa x 2^Exponent
std::cout << "We have " << n << " = "
<< mantissa << " * 2^" << exp << std::endl;
return 0;
}
相关文章:
- g++的分段错误(在NaN上使用to_string两次时)
- 蛇在C++不会连续转两次
- 检查一个数组是否包含在另一个数组中,以相反的顺序,至少两次
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 我应该如何去缓解两次出现的cin?
- Realloc 两次无法在 Visual Studio 上运行
- 如果我使用同一个密钥推送用户数据两次,会发生什么
- 当 reset() 被unique_ptr调用两次时会发生什么?
- 两次商店有什么
- 两次删除链表有什么区别?
- 在C 中,当使用两次时,这意味着什么
- 有什么方法可以通过删除表达式安全地处理两次释放内存?
- 执行随机开关函数的QT方式是什么连续两次使用相同情况的方法
- 如果参数传递两次,会发生什么情况?一次按值,一次按引用?是否会修改
- C++重载运算符两次,一个返回非常量引用,另一个返回常量引用,首选项是什么
- 是什么原因导致Windows发送ID_HELP命令两次
- "!!"(否定两次)的用法是什么?
- 为什么Microsoft在他们的 winnt.h 文件中两次 typedef 声明什么构成 "double" ?
- 不知道出了什么问题 - 两次程序隔离错误
- 什么是delete指针,指针=0;表述功?它清除内存两次吗?