Pull to refresh
47
0.2
Valentin Nechayev @netch80

Программист (backend/сети)

Send message

Из серии "мелких удивлений", почему так всё странно:
Когда появилась двоичная плавающая точка, естественно было бы ожидать, что сразу появится и вариант текстового ввода-вывода в двоичном виде (возможно, свёрнутого до восьмеричного или шестнадцатиричного), который даёт:
1) точность передачи значения;
2) избавление от сложного и дорогого кода преобразования путём умножения и деления (который ещё долго был неточным, а для точного требуется многословная арифметика - для double это 1000+ бит в предельном случае, а ещё база констант).

Пример: "0x1.921fb54442d18p+1" (число π в double).

Тем не менее, в Fortran этого нет до сих пор, насколько я знаю - а там я ожидал бы в первую очередь. В C появилось в C99 ("%a" в printf, scanf). Аналогичные форматные методы ещё в десятке актуальных языков (Go, Lua, Matlab, OCaml, Perl, PHP, R, Ruby, Rust, Swift, Zig, спасибо ИИ за поиск). В C++ - режим iostream, с C++11 (std::hexfloat). В Python, Ada, Java, Julia, Haskell - нет форматного знака, есть отдельные методы (например, hex(), from_hex()). В некоторых других - требуются отдельные библиотеки, особенно странно про Javascript, где и целых-то нет, есть double на всё.

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

(Ну, и опробуем "посты". На статью это не тянет, а просто поговорить - почему бы и нет.)

Tags:
Total votes 4: ↑4 and ↓0+5
Comments17

Information

Rating
2,632-nd
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity