Назначить и рассчитать по экспоненциальной записи - PullRequest
0 голосов
/ 10 ноября 2011

Вы когда-нибудь наблюдали это явление:

Если я попытаюсь вычислить следующий расчет в ImmediateWindow в Visual Studio 2010 C # .Net, я получу это странное решение.

1E-9 * 100 = 0.00000010000000000000001
1E-9 * 1E+2 = 0.00000010000000000000001

Дажеесли я делаю вычисления следующим образом:

double val = 1E-9;
0.000000001
val = val * 100;
0.00000010000000000000001

Если я вычисляю те же вычисления в Windows calc, я получаю ожидаемый результат:

1E-9 * 100 = 0,0000001

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

1 Ответ

0 голосов
/ 26 июля 2012

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

decimal val = 1E-9;
0.000000001
val = val * 100;
0.0000001

См. Что должен знать каждый компьютерный специалист об арифметике с плавающей точкой

...