Pull to refresh

Double, Float — не вещественные числа

Reading time3 min
Views25K

Во многих источниках тип double и float, числа с плавающей запятой/точкой зачем-то называют вещественными. Такое чувство что кто-то когда-то совершил ошибку или не внимательно написал эту глупость и все как один начали её повторять, совершенно не задумываясь о чём они говорят.

Ладно это были бы просто троечники студенты и любители, так эту ошибку говорят и те, кто обучают специалистов. И эта проблема терминологии не одного ЯП, их правда много (Java, C++, C#, Python, JS и т.д.) везде, где бы я не искал, всегда находятся статьи, ответы, лекции, где дробные числа называют вещественными!

Вот ОЧЕНЬ МАЛЕНЬКАЯ выборка:

Начнём с простого, что такое вещественное число коим называют double и float. Будет немного формул, но не пугайтесь, прочитайте пожалуйста до конца, они очень простые, к каждой я даю интуитивное объяснение.

Вещественное число

Определение можете прочитать в Википедии или дочитать до конца мою статью, где я простым языком скажу или вы сами поймёте, но нужно проследить за мыслью, которую я хочу донести до вас. Я напишу формулой из теории множеств:

R = Q ∪ I

Где, R - множество вещественных чисел;

Q - множество рациональных чисел;

I - множество иррациональных чисел.

Так же Q ⊂ R и I ⊂ R.

Расшифровка тем, кто не очень с теорией множеств. Вещественные числа эта числа которые включают в себя Рациональные и Иррациональные числа (R = Q ∪ I), т.к. Вещественные числа включают их в себя, то Рациональные числа и Иррациональные числа являются подмножеством множества Вещественных (Q ⊂ R и I ⊂ R), причём строго, то есть Q != R и I != R, это очевидная мысль, но её требуется подчеркнуть.

Теперь к самому интересному, какие числа называются Рациональными и Иррациональными (представляю себя преподавателем начальных курсов технических вузов).

Рациональные

Начнём с Рациональных, возьмём определение из википедии.

Рациональное число (от лат. ratio «отношение, деление, дробь») — число, которое можно представить в виде обыкновенной дроби m/n, где m — целое число, а n — натуральное.

Так же стоит отметить, что Рациональные включают в себя Целые и Натуральные числа (-1, 0, 1, 2 ...) их можно выразить в виде дроби, 1 = 1/1, 2 = 2/1, -1 = -1/1, 0 = 0/1 и т.д.

Почему это важно? Потому что Иррациональные числа не включают в себя Целые и Натуральные числа, это отдельный класс чисел.

Иррациональные

Берём определение из Википедии.

Иррациональное число — это вещественное число, которое не является рациональным, то есть не может быть представлено в виде обыкновенной дроби m/n, где m,n — целые числа, n != 0. Иррациональное число может быть представлено в виде бесконечной непериодической десятичной дроби.

Так же приведу примеры иррациональных чисел, чтобы стало понятно: π (число пи), e (число Эйлера), √2.

Вы начали что-то подозревать? Если нет я помогу вам.

Первое предложение определения — это то, о чём я вам говорил, то, что Иррациональные числа — это отдельный класс чисел и он не включает в себя Целые и Натуральные.

Но самое важное здесь это второе предложение "Иррациональное число может быть представлено в виде бесконечной непериодической десятичной дроби.".

Что это значит? Заметили, что в примерах я дал вам буквенное обозначение? Это не просто так, это представление иррационального числа, ВАЖНО - сама запись π это не само иррациональное число, это всего лишь его представление, и оно является чем угодно, но не иррациональным числом. Само Иррациональное число оно бесконечно. Понимаете?

То есть его невозможно записать по определению. Никакой памяти в компьютере не хватит чтобы его записать. Это невозможно!

И мало того что в большинстве (я не проверял прям на всех, но очень сомневаюсь, что хотя бы в одном это есть) языков в которых используется термин Вещественный тип нельзя чисто синтаксически сделать запись по типу: "double a = π", попросту будет ошибка компиляции, так ещё если и возможно с помощью латинских букв подключая библиотеки, то в конечном-то итоге эта переменная будет ссылаться на конечное представление, а то есть рациональное этого иррационального числа!

Всё с чем мы можем работать это ТОЛЬКО РАЦИОНАЛЬНЫЕ ЧИСЛА, представления иррациональных чисел они ТОЖЕ рациональные и ТОЛЬКО рациональные. Они большие, они могут быть ооооочень большими, но они всё равно рациональные!

R = Q ∪ I, если мы исключаем I из-за невозможности работы с ними в прямом смысле без представлений получается R' = R\I, R' = Q, а Q у нас рациональные числа.

Так почему же так много людей и весьма неглупых всё ещё допускают эту простую ошибку? Эту ошибку можно было описать в пару предложений, но я хотел донести до вас последовательно как к этому прийти, используя общепринятую терминологию.

Спасибо.

P.S. Это моя оригинальная статья AfterWing, не является переводом, доработкой другой какой-либо статьи на русском/английском и др. языках.

Tags:
Hubs:
Total votes 71: ↑20 and ↓51-27
Comments81

Articles