c++数据类型及其表示方式
c++ data types and how they are represented
我一直在使用巴比伦平方根算法,这是我在编程课程介绍中的一项作业。该程序运行良好,并给出相当准确的答案。我的问题源于行中发生的一些奇怪的事情(而guess != result)我写while语句是为了检查这两项,一旦它们相等,就终止循环。但是,如果您输入50作为起始数字,循环将在爆发之前检查两个相同的数字三次,而不是一次。这是因为有更多的数字在后台处理,双数据类型不能显示吗?我知道double可以到小数点后15位。我希望我的措辞是可以理解的,如果有人需要澄清就问。PS-如果有人有提示,以帮助使我的代码更干净,请让我知道,我正在努力学习如何格式化我的代码是尽可能可读的。
#include <iostream>
using namespace std;
int main()
{
double input, // Users number
guess = 2, // First guess, always 2 at beginning
result, // altered guess, becomes guess 1 when repeated
r; // input divided by guess
int steps = 1, // keeps track of step number, for debugging
loop = 1; // controls continue loop
string error_1 = " Warning: input is negative, please pick a new one";
while (loop == 1)
{
cout << "--Babylonian Square Root Algorithm--" << endl;
cout << "Type a positive number to find its square root: ";
cin >> input;
if (input >= 0)
{
while (guess != result) // test here for within 1%
{
r = input / guess;
result = (guess + r) / 2;
// DEBUG
cout << "-------" << endl;
cout << " Step # " << steps << endl;
cout << "-------" << endl;
cout << " R) " << r << endl;
cout << " Guess) " << guess << endl;
cout << " Result) " << result << endl;
steps++;
guess = result;
result = (guess + r) / 2;
cout << result << " is the approximate square root of " << input << endl;
//DEBUG
cout << " Steps required: " << steps - 1 << endl;
}
else
{
cout << error_1 << endl;
}
cout << "Continue? (Yes = 1, No = 0)" << endl;
guess = 2;
result = 0;
steps = 1;
cin >> loop;
cout << "------------------------------------------------------" << endl;
}
return 0;
}
}
"guess"answers"result"是"double"类型,它具有比默认cout浮点数显示长度更高的精度。
你认为这些数字是相同的,但它们不是。从小数点往远处看,你就能看到差别。
解决方案1:将cout十进制数字显示范围更改为更长的值,以便您可以看到数字实际上是不同的,因此while循环不会中断。在代码开头使用cout.precision(17);
解决方案二:更改guess &
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在c++中为模板函数实例创建快捷方式
- 如何将ampl中的集合表示为c++中的向量
- 终端如何在 shell 提示符下以编程方式阻止退格,以便您无法在其上退格,例如 $ 表示 bash 或 C:\blah\>
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 使用 OpenGL 使用 C++ 以图形方式表示堆积条形图
- 获取所有方式以两个整数的产品表示数字
- 以编程方式获取 C++ 中的转义字符串表示形式
- 在std::向量中表示原始字节的最佳方式
- 以图形方式表示C++代码
- 以对角方式表示用户输入的字符串
- 我想在窗口下使用 c++ 以某种基本方式表示西里尔字符
- 任何表示函数参数的方式
- 有没有一种优雅的方式来表示C++中包含不同类型的映射
- 有没有比向量<向量<T>>更自然的方式来表示T矩阵?
- 表示模板化负数字面值的首选方式
- 在C++中表示可为null成员的最佳方式
- c++数据类型及其表示方式
- c++中表示等于一组值的简洁方式
- 表示模板化数字文字的最佳方式是什么