Какое число в двоичной системе можно представить только приблизительно?

StackOverflow https://stackoverflow.com/questions/1674477

Вопрос

В десятичном формате (основание 10), 1/3 может быть аппроксимировано только до 0,33333 повторения.

Какое число является эквивалентом в двоичной системе координат и может быть представлено только приблизительно?

Это было полезно?

Решение

0,1 является одним из таких примеров, а также 0,2

Этот вопрос также похож на этот другой вопрос ТАК, на который уже есть очень хорошие ответы.

Другие советы

Лучше спросить, какие числа может быть представлено точно в двоичном формате.Все остальное можно лишь приблизить или не представить вообще.

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

Что ж, существуют бесконечные числа, которые невозможно точно представить в таких обозначениях, но вот одно:1/10.

Я предполагаю, что вы хотите спросить, какие рациональные числа можно выразить в двоичном виде, используя конечное представление.Я делаю вывод из вашего примера 1/3 в десятичной системе счисления.Это факт каждый Рациональное число может быть выражено в двоичном формате, если вы допускаете бесконечные представления.Но этот вопрос интересен только с точки зрения информатики, если вы допускаете только конечные представления.Я также предполагаю, что вы спрашиваете не о конкретных компьютерных представлениях (скажем, ИЭЭЭ 754), а скорее просто спрашиваю об общих позиционных представлениях.

Рациональное число p/q с (p, q) = 1 может быть выражено конечным представлением в базе b тогда и только тогда, когда каждый простой делитель q делит b.Никакие иррациональные числа не имеют конечного представления ни в какой базе.

В частности, рациональное число p/q с (p, q) = 1 может быть выражено как конечное представление в двоичном формате тогда и только тогда, когда каждый простой множитель числа q делит 2.То есть единственные рациональные числа p/q с (p, q) = 1 которые имеют конечное представление в двоичном формате, - это те, где q = 2^k для некоторого неотрицательного целого числа k.Более того, все такие рациональные числа могут быть выражены в конечном представлении в двоичном формате.Эти числа известны как диадическое рациональное мышление.

Числа, которые можно точно представить по основанию 2, — это диадическое рациональное мышление.Это числа, которые можно записать в форме k/2^n для некоторого целого числа k и целого числа n.Любое число, которое не может быть записано в такой форме, будет иметь неограниченное представление по основанию 2.

Однако вы, похоже, спрашиваете не о том, какие числа могут быть представлены в базе 2, а о том, какие числа могут быть представлены в каком-то фиксированном типе с плавающей запятой, например float или double.Это более тонкий вопрос;любое число, не являющееся двоично-рациональным, не может быть представлено, но и не все двоично-рациональные числа могут быть представлены.

Его каждый число, которое не может быть выражено как k/2^n для целого числа k и целого числа n.

Самый простой способ найти все эти числа — записать несколько простых чисел, не включающих 2.3, 5, 7, 11, 13, 17 и 19 — хорошие примеры простых чисел, не включающих 2.

Начни умножать.1/3, 2/3, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7 и т. д.

если вы сделаете это (и избежите чисел вида k/2^n), вы будете перечислять все возможные дроби, которые невозможно точно представить в двоичном формате.

Вероятно, вам следует прекратить перечисление, когда вы доберетесь до чисел, у которых все крайние левые 64-бита идентичны.

В питоне 2.4:

>>> 1.0 / 5.0
0.20000000000000001

Это указывает на то, что базе 2 трудно точно ее представить.

двоичный (.00011001100110011...) == десятичный (.1)

Я собираюсь нанести удар в бесконечность

Тот же набор чисел, который не может быть точно представлен по основанию 10, не может быть точно представлен по основанию 2.Там не должно быть разницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top