C 中双变量的近似值
Approximation of double variables in C++
我正在尝试运行此程序,其中您插入两个双重值,然后获得两个数字中的哪一个,如果是,则"数字相等",如果两个双的值是相同的,如果两个数字之间的差小于1/10.000.000。
,则消息"数字几乎相等"。我写的代码是:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
inline void keep_window_open() { char ch; cin >> ch; }
double square(double x)
{
return x * x;
}
int main() {
double number;
double number2;
while (cin >> number, cin >> number2) {
if (number == '|' || number2 == '|') break;
else {
cout << number << " " << number2 << endl;
if (number > number2) cout << number << " is bigger than " << number2 << endl;
if (number < number2) cout << number2 << " is bigger than " << number << endl;
double difference = number - number2;
if (difference > - 1/10000000 && difference < 0) cout << "the numbers are almost equal" << endl;
if (difference < 1 / 10000000 && difference > 0) cout << "the numbers are almost equal" << endl;
if (number == number2) cout << "the numbers are equal" << endl;
}
}
}
当我运行此程序并插入两个差异小于1/10.000.000的数字时,该程序应返回"数字几乎相等",但不是。
这就是它返回的(当我运行程序并插入两个数字时(,如果我插入" 1"answers" 1.0000000000001":
"1 1.0000000000001
1 1
1 is bigger than 1"
我不明白为什么该程序认为我插入1的两个数字,然后返回" 1"answers" 1"为值。
,它也应该给予回报"数字几乎相等",因为我写了:
if (difference > - 1/10000000 && difference < 0) cout << "the numbers are almost equal" << endl;
if (difference < 1 / 10000000 && difference > 0) cout << "the numbers are almost equal" << endl;
但不是。
当我插入两个双重值时,我如何获得返回"数字几乎相等"的程序,它们差异小于1/10.000.000(例如" 1"answers" 1.0000000000001"(?
当您尝试打印它们时,可以从这样的双重值中转。请参阅此处
至于您的代码,整数部门(1/10000000(将始终返回整数,因此您需要执行双重或小数值(1.0/1000000000.0(
这是一个工作代码,对逻辑进行了一些较小的更改
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
inline void keep_window_open() { char ch; cin >> ch; }
double square(double x)
{
return x * x;
}
int main() {
double number;
double number2;
while (cin >> number, cin >> number2) {
if (number == '|' || number2 == '|') break;
else {
cout.precision(15);
cout << number << " " << number2 << endl;
double difference = number - number2;
if (difference > - 1/10000000.0 && difference < 0) cout << "the numbers are almost equal" << endl;
else if (difference < 1/10000000.0 && difference > 0) cout << "the numbers are almost equal" << endl;
else if (number == number2) cout << "the numbers are equal" << endl;
else if (number > number2) cout << number << " is bigger than " << number2 << endl;
else if (number < number2) cout << number2 << " is bigger than " << number << endl;
}
}
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- C 中双变量的近似值
- 多态局部变量的近似值