Unity 3D & C #: добавление десятичной дроби к числу с плавающей запятой - PullRequest
0 голосов
/ 24 октября 2018

Итак, я создал простой скрипт, в котором у меня есть переменная с плавающей точкой «rps», которая начинается с 0,001.

Каждую секунду я добавляю 0,0001 к этой переменной.

Когда явыведите переменную на экран в Unity 3D, почему она получается в виде очень длинного десятичного числа, например 0,001099999999?

Таким образом, вместо добавления 0,0001 добавляется 0,00009999999999, когда это на 100% не то, что я добавляю.

Есть ли в любом случае это исправить, или это просто ошибка в Unity или C #, если я не могу это исправить, есть ли простой способ округлить его, так как я искал в интернете, и этовсе выглядит как много кода, который не кажется необходимым.Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

использовал фиксированную точку или целые числа, если вам нужен этот уровень точности.

float precision = 10000f; // 1.0000
int rps = (int)(0.001f * precision); // or rps = 10
int inc = (int)(0.0001f * precision); // or inc = 1

while (...)
{
    rps += inc;

    float rps_as_float = rps / precision;
}
0 голосов
/ 24 октября 2018

попробуйте это:

float rounded = (float)(Math.Round((double)f, 4);

вам нужно будет немного его настроить, но вы должны понять.

...