Нет, - десятичные знаки больше не являются «точными», чем двойные или, если на то пошло, любые типы. Понятие «точность», (когда речь идет о численных представлениях в вычислителе), является тем, что не так.Любой тип абсолютно на 100% точнее при представлении номера. unsigned bytes на 100% точны при представлении целых чисел от 0 до 255. Но они не подходят для фракций или для негативов или целых чисел вне диапазона.
Десятичные числа на 100% точны при представлении определенного набора базы 10 значений. удваивается (поскольку они сохраняют свое значение с помощью двоичного IEEE экспоненциального представления) являются точным при представляющем множестве бинарных чисел. Точно так же, как и другие, они просто предназначены для разных целей.
Выработать немного Furthur, так как я, кажется, не достаточно ясно, для некоторых читателей ...
Если взять каждое число, которое представляется в виде десятичного знака, и отметьте каждую из них на числовой прямой между каждый смежная пара из них есть дополнительный бесконечность действительных чисел, которые не представима в виде десятичной дроби. Точно такое же утверждение можно сделать о числах, которые могут быть представлены как двойные. Если вы отметили каждую десятичную цифру на числовой строке синим цветом, а каждый двойной в красном, за исключением целых чисел, было бы очень мало мест, где одинаковое значение было отмечено в обоих цветах. В общем, за 99,99999% знаков (пожалуйста, не делайте ничтожного моего процента) синий набор (десятичные знаки) - это совершенно другой набор чисел из красного набора (удваивается).
Это связано с тем, что по нашему самому определению для синего набора это то, что оно является базовым представлением 10 мантиссы/экспоненты, а double является базовым представлением 2 мантиссы/экспоненты. Любое значение, представленное в качестве базы 2 мантиссы и показателя, (1.00110101001 x 2^(-11101001101001)
означает взять значение мантиссы (1.00110101001
) и умножить его на 2 при повышении до степени экспоненты (при экспоненте отрицательно это равносильно делению на 2 на мощность абсолютного значения экспонента). Это означает, что если экспонента отрицательна (или где какая-либо часть мантиссы является дробной двоичной единицей), то число не может быть представлено в виде десятичной мантиссы и экспоненты и наоборот.
Для любого произвольного действительного числа, которое случайно падает на строке вещественных чисел, оно будет либо ближе к одному из синих десятичных знаков, либо к одному из красных удвоений.
Хорошая цитата! Где вы это нашли? – Jrud
http://web.sbu.edu/math/PiDay.html –
Очень приятно! – Svish