Возможная потеря части

Самый короткий / простой / самый быстрый способ будет:

:qa

Чтобы сохранить работу во всех вкладках и выйти:

:wqa
116
задан CodeLikeBeaker 30 June 2009 в 01:21
поделиться

5 ответов

Когда вы делите два int на значение с плавающей запятой, дробная часть теряется. Если вы переведете один из элементов в число с плавающей точкой, вы не получите эту ошибку.

Так, например, превратите 10 в 10.0

double returnValue = (myObject.Value / 10.0);
163
ответ дан 24 November 2019 в 02:15
поделиться

Вы выполняете целочисленное деление, если myObject.Value является целым числом, поскольку обе стороны / имеют целочисленный тип.

Для деления с плавающей запятой одно из чисел в выражении должно иметь тип с плавающей запятой. Это было бы верно, если бы myObject.Value был двойным или любым из следующего:

double returnValue = myObject.Value / 10.0;
double returnValue = myObject.Value / 10d; //"d" is the double suffix
double returnValue = (double)myObject.Value / 10;
double returnValue = myObject.Value / (double)10;
57
ответ дан 24 November 2019 в 02:15
поделиться

Предполагая, что myObject.Value является int , уравнение myObject.Value / 10 будет целочисленным делением, которое затем будет преобразовано в значение типа double.

Это означает, что значение myObject.Value, равное 12, приведет к тому, что returnValue станет 1, не 1.2.

Сначала вам необходимо преобразовать значения:

double returnValue = (double)(myObject.Value) / 10.0;

Это приведет к правильному значению 1,2, по крайней мере, такому же правильному, как double позволяют с учетом их ограничений, но это обсуждается в другом месте на SO, почти бесконечно: -).

7
ответ дан 24 November 2019 в 02:15
поделиться

Я думаю, поскольку myObject является int, вам следует

double returnValue=(myObject.Value/10.0); 
4
ответ дан 24 November 2019 в 02:15
поделиться

Целое число, деленное на целое число, вернет вам целое число. Преобразуйте значение Value в двойное или разделите на 10.0.

7
ответ дан 24 November 2019 в 02:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: