C#

C#.Почему double не конвертируется во float?

ost = float.Parse(Math.Round((m - b) / b * 100));.Почему .Parse не конвертирует double во float?
Потому что метод Parse принимает аргумент типа string. Приведи double в скобках к string, а потом уже float.Parse.
 double d = 1.234567876432345678998765432; 
float f = float.Parse(d.ToString());
Console.WriteLine(f);
СК
Сергей Кузин
93 774
Лучший ответ
Герасим Долженков ost = float.Parse(Convert.ToString(Math.Round((m - b) / b * 100))); Да сработало. Ошибки нет. Спасибо
Потому, что double может содержать число большего размера, чем float. Неявного преобразования в таких случаях не происходит, нужно делать принудительно.
Герасим Долженков float.Parse() не считает принудительным преобразованием?
Буквки f нет? Я незнаю
Jjjjjj
Jjjjjj
3 226
Герасим Долженков А где ее надо поставить?
В C# тип данных double и тип данных float являются разными и несовместимыми типами данных. Двойное число — это 64-битное число с плавающей запятой, а число с плавающей запятой — 32-битное число с плавающей запятой.

Двойное число имеет большую точность и более широкий диапазон значений, чем число с плавающей запятой, что делает его более подходящим для определенных вычислений. Однако из-за своего большего размера двойное число занимает больше памяти и требует большей вычислительной мощности для работы по сравнению с числом с плавающей запятой.

Поэтому невозможно напрямую преобразовать двойное число в число с плавающей запятой без потери точности. Вместо этого вам нужно явно преобразовать двойное значение в число с плавающей запятой с помощью оператора (float). Например:

двойной d = 3,14159265; поплавок f = (поплавок)d;

Это приведёт двойное значение d к типу с плавающей запятой и сохранит результат в переменной с плавающей запятой f. Обратите внимание, что в этом процессе может быть потеряна некоторая точность, так как значение d может не вписываться точно в меньший диапазон числа с плавающей запятой.
Герасим Долженков так я преобразовал принудительно.ost = float.Parse(Math.Round((m - b) / b * 100));. Все равно выдает ошибку
Сергей Кузин Подвёл ChatGPT? xD
Сергей Кузин
 двойной d = 3,14159265;  поплавок f = (поплавок)d; 
Ахаха, ещё и не посмотрел что отправляешь xD