Вы должны указать имя файла манифеста в файле проекта. Откройте соответствующий файл csproj (Solution Explorer -> select your project -> F4 \ Edit sources
) и добавьте следующую строку в группу глобальных свойств:
app.manifest
Для получения дополнительной информации вы можете прочитать этот вопрос:
Как я могу встроить файл манифеста для конкретной конфигурации в мое приложение c #?
Да, но вы должны указать, что они являются числами с плавающей запятой, в противном случае они обрабатываются как двойные числа:
z.b = 2.2f
'f' в конце числа делает его плавающим вместо двойного .
Java не будет автоматически сужать двойное число до числа с плавающей точкой.
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.
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.
can't doubles be floats as well?
Нет. Каждое значение или переменная имеет ровно один тип (double, float, int, long и т. Д.). Спецификация языка Java точно описывает, что происходит, когда вы пытаетесь присвоить значение одного типа переменной другого типа. Как правило, присваивания «меньшего» значения «большему» типу допускаются и выполняются неявно, но присваивания, в которых информация может быть потеряна, поскольку целевой тип слишком «мал», чтобы содержать все значения исходного типа, не допускаются компилятор, даже если конкретное значение вписывается в целевой тип.
Вот почему компилятор жалуется, что присвоение двойного значения (которое является неявным литералом) переменной с плавающей запятой может привести к потере информации, и вы должны успокоить ее любым из сделав значение с плавающей точкой, или путем явного приведения.
Одной из областей, которая часто вызывает путаницу, являются вычисления, потому что они неявно «расширены» до int по техническим причинам. Таким образом, если вы умножите два коротких и попытаетесь присвоить результат короткому, компилятор будет жаловаться, потому что результатом вычисления является int.
Нет, числа с плавающей точкой могут автоматически повышаться до двойных, но удвоения никогда не могут быть числами с плавающей запятой без явного приведения, потому что у парных чисел больший диапазон.
диапазон с плавающей запятой 1.40129846432481707e-45
- 3.40282346638528860e + 38
двойной диапазон равен 4.94065645841246544e-324d
- 1.79769313486231570e + 308d