По сути, я пытаюсь ввести значение в консоль и вывести десятичную точку как целое число, и это то, что должно произойти.
Я разработал способ сделать это, используя float, инт и простые математики.Я все еще новичок в C ++, но эта ошибка не имеет смысла.
Если вы введете 0,01, 0,02, 0,03, 0,04, 0,06 или 0,08, вы получите неправильный вывод.Я просто хочу, чтобы это было так просто, как 0,06 * 100 = 6.
Я почти уверен, что это простая ошибка, но почему это так, когда я в любом случае ввожу целое число с плавающей точкой?
#include <iostream>
using namespace std;
int main()
{
float input = 0;
while (input <= 0 || input > 999.99)
{
cout << "Please enter a number with decimal: ";
cin >> input;
}
int whole_num = input;
float to_decimal = input - whole_num;
int decimal = to_decimal * 100;
cout << decimal << endl;
return 0;
}
РЕДАКТИРОВАТЬ : я нашел решение для моей проблемы
Возникла проблема с точностью с плавающей точкой.Пока добавление 0.5f к int может решить проблему.Я знаю, что он делает это правильно для ввода 2 десятичных знаков, не уверен для других типов.
Благодаря Фредерику Слайкерману!
#include <iostream>
using namespace std;
int main ()
{
float asfloat = 0.03;
int asint = asfloat * 100;
int asint_fix = 0.5f + asfloat * 100;
cout << "0.03 * 100 = " << asint << endl;
cout << "0.03 * 100 (with the +0.5f fix) = " << asint_fix << endl;
return 0;
}
Возвращает:
0.03 * 100 = 2
0.03 * 100 (with the +0.5f fix) = 3