Простите меня, если это наивный вопрос, но сегодня я в растерянности.
У меня есть простой расчет деления, например:
double returnValue = (myObject.Value / 10);
Значение - это целое число в объекте.
Я получаю сообщение о возможной потере доли. Однако, когда я изменяю double на int, сообщение исчезает.
Есть мысли о том, почему это могло произойти?
Ответы:
Когда вы делите два int на значение с плавающей запятой, дробная часть теряется. Если вы приведете один из элементов к float, вы не получите эту ошибку.
Так, например, превратите 10 в 10.0
источник
Вы делаете целочисленное деление, если
myObject.Value
это int, поскольку обе стороны/
имеют целочисленный тип.Для деления с плавающей запятой одно из чисел в выражении должно иметь тип с плавающей запятой. Это было бы верно, если бы myObject.Value был двойным или любым из следующего:
источник
Целое число, разделенное на целое число, вернет вам целое число. Преобразуйте значение Value в двойное или разделите на 10.0.
источник
Предполагая, что
myObject.Value
это -int
, уравнениеmyObject.Value / 10
будет целочисленным делением, которое затем будет преобразовано в двойное.Это означает, что myObject.Value, равный 12, приведет к тому, что returnValue станет 1, а не 1,2.
Сначала вам нужно указать значение (я):
Это приведет к правильному значению 1.2, по крайней мере, такому же правильному, как doubles позволяют с учетом их ограничений, но это обсуждается в другом месте на SO, почти бесконечно :-).
источник
Я думаю, поскольку myObject является int, вам следует
источник