Casting numbers
This is an interesting concept.
Trying to use different variable types together presents interesting dilemmas.
Watch the video below and you will understand what I mean
Trying to use different variable types together presents interesting dilemmas.
Watch the video below and you will understand what I mean
Scenario
Comparing floating-point numbers in C++ may lead to unexpected results.
Run the following program and modify the is_close function to get the desired results.
Run the following program and modify the is_close function to get the desired results.
Sample Code
#include <iostream>
#include <math.h>
using namespace std;
bool is_close(double a, double b, double tolerance){
// Your code goes here
return false;
}
int main(void) {
if (0.3 == 3 * 0.1) {
cout << "The numbers are equal";
}
else {
cout << "The numbers are not equal";
}
cout << endl;
if (is_close(0.3, 3 * 0.1, 0.00000001)) {
cout << "The numbers are close enough";
}
else {
cout << "The numbers are not close enough";
}
cout << endl;
// this should work regardless of the argument order
if (is_close(3 * 0.1, 0.3, 0.00000001)) {
cout << "The numbers are still close enough";
}
else {
cout << "The numbers are not close enough";
}
cout << endl;
if (is_close(3 * 0.1, 0.31, 0.00000001)) {
cout << "The numbers are still close enough";
}
else {
cout << "The numbers are not close enough";
}
cout <<endl
return 0;
}
#include <math.h>
using namespace std;
bool is_close(double a, double b, double tolerance){
// Your code goes here
return false;
}
int main(void) {
if (0.3 == 3 * 0.1) {
cout << "The numbers are equal";
}
else {
cout << "The numbers are not equal";
}
cout << endl;
if (is_close(0.3, 3 * 0.1, 0.00000001)) {
cout << "The numbers are close enough";
}
else {
cout << "The numbers are not close enough";
}
cout << endl;
// this should work regardless of the argument order
if (is_close(3 * 0.1, 0.3, 0.00000001)) {
cout << "The numbers are still close enough";
}
else {
cout << "The numbers are not close enough";
}
cout << endl;
if (is_close(3 * 0.1, 0.31, 0.00000001)) {
cout << "The numbers are still close enough";
}
else {
cout << "The numbers are not close enough";
}
cout <<endl
return 0;
}
Sample Output
The numbers are not equal
The numbers are close enough
The numbers are still close enough
The numbers are not close enough
The numbers are close enough
The numbers are still close enough
The numbers are not close enough