3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 04:17
Оценка:
Не знай в какую тему сунуть вопрос, поэтому сюда.

Мне надо в числовой тэг объекта (float) запихнуть два числа. Номер объекта в некоем массиве, но еще и каждый объект по тегу должен знать а какой он из скольки.

Другими словами, например дробь 3/4 — содержит эту информацию — у нас как бы третий объект из четырех.
А вот та же самая дробь в другом представлении — 0.75 — уже эту информацию теряет.

Как в 0.75 засунуть инфу о 3/4 ?

Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?
Отредактировано 01.07.2021 4:18 Homunculus . Предыдущая версия .
Re: 3/4 vs 0.75
От: B-52 Россия  
Дата: 01.07.21 05:02
Оценка: +1
Здравствуйте, Homunculus, Вы писали:

H>Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?


— Б4
— Ранил!
Re[2]: 3/4 vs 0.75
От: SаNNy Россия  
Дата: 01.07.21 05:07
Оценка: :))) :)
Здравствуйте, B-52, Вы писали:

B5>Здравствуйте, Homunculus, Вы писали:


H>>Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?


B5>- Б4

B5>- Ранил!

— В-52
— Убил!
Re: 3/4 vs 0.75
От: Shmj Ниоткуда  
Дата: 01.07.21 05:16
Оценка: +2
Здравствуйте, Homunculus, Вы писали:

H>Мне надо в числовой тэг объекта (float)


Почему именно float? Он же не точный.

H>Как в 0.75 засунуть инфу о 3/4 ?


Это аж из 6-го класса, очень сложно, не все потянут: https://www.berdov.com/docs/fraction/kak-perevesti-desyatichnuyu-drob-v-obiknovennuyu/

H>Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?


Устанавливать биты.
=сначала спроси у GPT=
Re[2]: 3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 05:20
Оценка: +2
Здравствуйте, Shmj, Вы писали:

S>Это аж из 6-го класса, очень сложно, не все потянут:


Действительно, не все потянут, что 0.5 — это и пятый из десяти и третий из шести.
Re[3]: 3/4 vs 0.75
От: pagid Россия  
Дата: 01.07.21 05:25
Оценка: -1
Здравствуйте, Homunculus, Вы писали:

H>Действительно, не все потянут, что 0.5 — это и пятый из десяти и третий из шести.

Так сокращать дроби где-то примерно тогда и учат, или еще раньше.
Re[4]: 3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 05:27
Оценка: :))
Здравствуйте, pagid, Вы писали:

P>Здравствуйте, Homunculus, Вы писали:


H>>Действительно, не все потянут, что 0.5 — это и пятый из десяти и третий из шести.

P>Так сокращать дроби где-то примерно тогда и учат, или еще раньше.

Так это сокращение я имел ввиду под «потеря информации». Но понять это смогли не только ли все, мало кто смог понять. И стали меня тыкать в программу 6 класса
Re: 3/4 vs 0.75
От: Alexander G Украина  
Дата: 01.07.21 05:32
Оценка: 5 (2) +2
Здравствуйте, Homunculus, Вы писали:


H>Как в 0.75 засунуть инфу о 3/4 ?


H>Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?


Думаю, в любом случае будет стрёмная эквилибристика. Другой вариант, кроме поразрядного:

Если знаменатель всегда меньше числителя, можно в целой части хранить знаменатель, в дробной -- значение дроби.
trunc(4.75) = 4 -- знаменатель
round( frac(4.75)*trunc(4.75) ) = round( 0.75 * 4 ) = 3 -- числитель
Русский военный корабль идёт ко дну!
Re[5]: 3/4 vs 0.75
От: pagid Россия  
Дата: 01.07.21 05:40
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>Так это сокращение я имел ввиду под «потеря информации». Но понять это смогли не только ли все, мало кто смог понять. И стали меня тыкать в программу 6 класса

Тогда никакой потери информации в переходе от 0.75 к 3/4 и не было. В 0.75 в принципе нет информации три это из четырех или шесть из восьми. Ну так-то это 75 из 100, но это неважно.
Re: 3/4 vs 0.75
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.07.21 05:42
Оценка: 5 (3)
Здравствуйте, Homunculus, Вы писали:

H>Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?

Речь о двух целых числах?
Каковы их диапазоны?
Есть известный алгоритм по взаимно-однозначному отображению рациональных чисел на целые.
Судя по всему, речь идёт даже о натуральных числах.
Тогда есть очевидное решение — нумерация треугольником:

0 1 2 3
0 0 1 3 6
1 2 4 7
2 5 8
3 9
Тут n[x, y] = (x+y)*(x+y+1)/2+y
В обратную сторону cходу формулу не напишу — но, похоже, надо будет брать квадратный корень, округлять и вычитать.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: 3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 05:45
Оценка:
Здравствуйте, pagid, Вы писали:

P>Ну так-то это 75 из 100, но это неважно.


Как раз вопрос и был задан, потому что это и важно
Re: 3/4 vs 0.75
От: Sheridan Россия  
Дата: 01.07.21 05:45
Оценка: 1 (1) +1
Здравствуйте, Homunculus, Вы писали:

H>Мне надо в числовой тэг объекта (float) запихнуть два числа.

Запихни туда адрес объекта, содержащего нужное тебе в удобном формате. Да, надо будет подпрыгнуть в приседе чтобы из float получить адрес, добраться до объекта и так далее. Зато работать потом будет удобно.
Matrix has you...
Re: 3/4 vs 0.75
От: s_aa Россия  
Дата: 01.07.21 05:46
Оценка:
H>Как в 0.75 засунуть инфу о 3/4 ?

Мантисса и экспонента?
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Re: 3/4 vs 0.75
От: L.K. Марс  
Дата: 01.07.21 05:48
Оценка:
У чисел с плавающей точкой есть мантисса (двоичная), экспонента (тоже двоичная) и знак.

Можно хранить в мантиссе делитель дроби, а в экспоненте делимое.

По сути получится хранилище для двух целочисленных переменных.
Re: 3/4 vs 0.75
От: Qt-Coder  
Дата: 01.07.21 06:15
Оценка: 1 (1) +4
Здравствуйте, Homunculus, Вы писали:

3.4?
Re: 3/4 vs 0.75
От: Dym On Россия  
Дата: 01.07.21 06:20
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>Мне надо в числовой тэг объекта (float) запихнуть два числа. Номер объекта в некоем массиве, но еще и каждый объект по тегу должен знать а какой он из скольки.

Ну вообще в машинном представлении float это мантисса и степень. Если хочется простоты и наглядности, то цела и дробная части.
Например, число 3/4 записать как 3.4. Изврат, конечно, что там с точностью — хз, но зато просто и наглядно.
Счастье — это Glück!
Re: 3/4 vs 0.75
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 01.07.21 06:38
Оценка: 1 (1) +2
Здравствуйте, Homunculus, Вы писали:

H>Мне надо в числовой тэг объекта (float) запихнуть два числа.


А заказчику это надо?
Как аналитик скажу тебе, что твоё желание — бред.
Твоя задача решается через 2 числа.
Вселенная бесконечна как вширь, так и вглубь.
Re[2]: 3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 06:42
Оценка:
Здравствуйте, Real 3L0, Вы писали:


R3>А заказчику это надо?


Дело не в том, что надо заказчику, а в том, какой инструментарий предоставляет некий движок. А предоставляет он float тэг
Re[2]: 3/4 vs 0.75
От: rg45 СССР  
Дата: 01.07.21 08:05
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>

0 1 2 3
0 0 1 3 6
1 2 4 7
2 5 8
3 9
S>Тут n[x, y] = (x+y)*(x+y+1)/2+y


Немного не так. В данном случае известно, что x < y, y >= 1 (по семантике y — это размер массива, а x — zero-based индекс элемента в массиве). Поэтому треугольник лучше сделать таким:

x — по горизонтали, y — по вертикали
0 1 2 3
1 0
2 1 2
3 3 4 5
4 6 7 8 9
И формула попроще:

n[x, y] = x + y*(y-1)/2;

Обратное преобразование мне выводить тоже лень
(И да, придется иметь дело с квадратным корнем и округлениями).
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 01.07.2021 10:33 rg45 . Предыдущая версия . Еще …
Отредактировано 01.07.2021 8:32 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:31 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:27 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:15 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:11 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:10 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:08 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 8:06 rg45 . Предыдущая версия .
Re[3]: 3/4 vs 0.75
От: Dair Россия  
Дата: 01.07.21 08:18
Оценка:
Здравствуйте, Homunculus, Вы писали:

R3>>А заказчику это надо?

H>Дело не в том, что надо заказчику, а в том, какой инструментарий предоставляет некий движок. А предоставляет он float тэг

float это нонче 64 бита же? Ну и кодируй ими два 32-битных числа, числитель и знаменатель.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.