Первый код EF & ldquo; Неверное имя столбца 'Дискриминатор' & rdquo; но без наследства

Точность зависит от величины исходных чисел. В плавающей запятой компьютер представляет собой номер 312 как научную нотацию:

3.12000000000 * 10 ^ 2

Число знаков после запятой в левой части (мантисса) фиксировано. Показатель также имеет верхнюю и нижнюю границу. Это позволяет отображать очень большие или очень маленькие числа.

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

312.0 + 643.0 <==>

3.12000000000 * 10 ^ 2 +
6.43000000000 * 10 ^ 2
-----------------------
9.55000000000 * 10 ^ 2

Если вы попытались добавить очень большое и очень маленькое число, вы потеряете точность, потому что они должны быть сжаты в вышеуказанный формат. Рассмотрим 312 + 12300000000000000000000. Сначала вам нужно масштабировать меньшее число, чтобы выстроить его в соответствии с большим, а затем добавить:

1.23000000000 * 10 ^ 15 +
0.00000000003 * 10 ^ 15
-----------------------
1.23000000003 <-- precision lost here!

Плавающая точка может обрабатывать очень большие или очень маленькие цифры. Но он не может представлять оба одновременно.

Что касается добавления int и удвоений, int сразу превращается в double, тогда применяется вышеприведенное.

141
задан Ingako 11 April 2016 в 02:02
поделиться