Пытаюсь получить в ответе переменную t2 не как тип int, а как float. Т.е. сейчас при вводе числа 457 у меня number two = 5, а я хочу получить 5.7. Код уже с примером, как я пытаюсь сделать, но всё равно выводит без десятых. Что я делаю не так?
int e, n;
float s, t2;
cout << "vvedite n\n";
cin >> n;
s = float(n) / 100 ; // первая цифра
t2 = float ((n / 10) % 10); // вторая цифра
e = n % 10; // третья цифра
cout << "number one = " << float(s) << endl;
cout << "number two = " << float(t2) << endl;
cout << "number fri = " << e << endl;
У вас переменная t2 и так является типом float. Операция "модуль" (%) не используется с типами с плавающей запятой. Выход - пользоваться функцией fmod из стандартной библиотеки. К тому же, чтобы получить 5.7 нужно несколько иначе считать.
#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
using namespace std;
int e, n;
float s, t2, t2fmod;
cout << "vvedite n \n";
cin >> n;
s = n / 100 ;
t2 = (n % 100) / 10.0; // (int) / (float) = (float); или static_cast<float>(10) -- глупо
// или
t2fmod = fmod(n, 100) / 10; // (float) / (int) = (float);
e = n % 10;
cout << "number one = " << s << endl;
cout << "number two = " << fixed << setprecision(1) << t2 << "(" << t2fmod << ")" << endl;
cout << "number three = " << e << endl;
}
Явные приведения типов в стиле Си ((type)variable) нежелательны в C++. Лучше пользоваться операциями *_cast.
Из целого числа вы никогда не получите с помощью приведения вещественное с ненулевой дробной частью. Ей просто неоткуда там взяться. Если нужно получить хвост без старшего разряда, то самый простой вариант — просто выполнить вычитание целой части, связанной со старшим разрядом, перед делением:
int n = 457;
s = n / 100.0; // 4.57
t2 = (n - static_cast<int>(s) * 100) / 10.0; // 5.7
e = n % 10; // 7
При желании можно обернуть в цикл, чтобы работать не только с трехразрядными числами.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники