Java: дважды по сравнению с плаванием

Вы должны указать имя файла манифеста в файле проекта. Откройте соответствующий файл csproj (Solution Explorer -> select your project -> F4 \ Edit sources) и добавьте следующую строку в группу глобальных свойств:

app.manifest

Для получения дополнительной информации вы можете прочитать этот вопрос:

Как я могу встроить файл манифеста для конкретной конфигурации в мое приложение c #?

22
задан inspectorG4dget 12 October 2012 в 00:45
поделиться

5 ответов

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

z.b = 2.2f

'f' в конце числа делает его плавающим вместо двойного .

Java не будет автоматически сужать двойное число до числа с плавающей точкой.

32
ответ дан 29 November 2019 в 03:40
поделиться

By default, Java will treat a decimal (e.g. "4.3") as a double unless you otherwise specify a float by adding an f after the number (e.g. "4.3f").

You're having the same problem on both lines. First, the decimal literal is interpreted as a double by the compiler. It then attempts to assign it to b, which is of type float. Since a double is 64 bits and a float is only 32 bits (see Java's primitives documentation), Java gives you an error indicating that the float cannot fit inside the double. The solution is to add an f to your decimal literals.

If you were trying to do the opposite (i.e. assign a float to a double), that would be okay since you can fit a float's 32 bits within a double's 64.

9
ответ дан 29 November 2019 в 03:40
поделиться

Don't use float. There is almost never a good reason to use it and hasn't been for more than a decade. Just use double.

6
ответ дан 29 November 2019 в 03:40
поделиться
can't doubles be floats as well?

Нет. Каждое значение или переменная имеет ровно один тип (double, float, int, long и т. Д.). Спецификация языка Java точно описывает, что происходит, когда вы пытаетесь присвоить значение одного типа переменной другого типа. Как правило, присваивания «меньшего» значения «большему» типу допускаются и выполняются неявно, но присваивания, в которых информация может быть потеряна, поскольку целевой тип слишком «мал», чтобы содержать все значения исходного типа, не допускаются компилятор, даже если конкретное значение вписывается в целевой тип.

Вот почему компилятор жалуется, что присвоение двойного значения (которое является неявным литералом) переменной с плавающей запятой может привести к потере информации, и вы должны успокоить ее любым из сделав значение с плавающей точкой, или путем явного приведения.

Одной из областей, которая часто вызывает путаницу, являются вычисления, потому что они неявно «расширены» до int по техническим причинам. Таким образом, если вы умножите два коротких и попытаетесь присвоить результат короткому, компилятор будет жаловаться, потому что результатом вычисления является int.

3
ответ дан 29 November 2019 в 03:40
поделиться

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

диапазон с плавающей запятой 1.40129846432481707e-45 - 3.40282346638528860e + 38

двойной диапазон равен 4.94065645841246544e-324d - 1.79769313486231570e + 308d

17
ответ дан 29 November 2019 в 03:40
поделиться
Другие вопросы по тегам:

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