Re: 3/4 vs 0.75
От: Sealcon190 Соломоновы острова  
Дата: 01.07.21 08:24
Оценка: +2
Здравствуйте, Homunculus, Вы писали:

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


Например написать свой тип, с блэкджеком и шлюхами.
Re[2]: 3/4 vs 0.75
От: Лось Чтостряслось СССР  
Дата: 01.07.21 08:28
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

QC>3.4?


нет такого числа
социализм или варварство
Re: 3/4 vs 0.75
От: Je suis Mamut  
Дата: 01.07.21 08:44
Оценка: +2
H>Можно конечно использовать разряды. Например 3/4 зашифровать в 3004. Но может красивше есть решение?

Распихать по битикам — это ж самое естественное. Только не забывай, у тебя не все варианты доступны — много NaN-ов и тебе их с высокой вероятностью превратят в один единственный вариант NaN-а.
Re[3]: 3/4 vs 0.75
От: Qt-Coder  
Дата: 01.07.21 08:57
Оценка:
Здравствуйте, Лось Чтостряслось, Вы писали:

ЛЧ>Здравствуйте, Qt-Coder, Вы писали:


QC>>3.4?


ЛЧ>нет такого числа

Есть 3.399999999999 ?
Re[4]: 3/4 vs 0.75
От: Лось Чтостряслось СССР  
Дата: 01.07.21 09:10
Оценка:
Здравствуйте, Qt-Coder, Вы писали:

ЛЧ>>нет такого числа

QC>Есть 3.399999999999 ?

типа того
социализм или варварство
Re[2]: 3/4 vs 0.75
От: rg45 СССР  
Дата: 01.07.21 09:12
Оценка: 1 (1) +5
Здравствуйте, Qt-Coder, Вы писали:

QC>3.4?


И что делать, если нужно 3 и 40?
--
Справедливость выше закона. А человечность выше справедливости.
Re[3]: 3/4 vs 0.75
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 01.07.21 09:31
Оценка:
Здравствуйте, Homunculus, Вы писали:

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


1. Попытка натянуть сову на глобус. Заказчик тут очень важен. Завтра он тебе скажет хранить строку, ты её тоже во float пихать будешь?
2. В данном случае единственный (вроде) вариант: первое число хранить до точки, второе — после. Но не знаю, как float с этим справится.

UPD: Отписались
Автор: rg45
Дата: 01.07.21
, что второй вариант не подходит.
Вселенная бесконечна как вширь, так и вглубь.
Отредактировано 01.07.2021 9:35 Real 3L0 . Предыдущая версия .
Re[7]: 3/4 vs 0.75
От: ути-пути Россия  
Дата: 01.07.21 09:38
Оценка: +1
Здравствуйте, Homunculus, Вы писали:

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


H>Как раз вопрос и был задан, потому что это и важно


Тогда тебе плавающая точка не подходит, только в виде изначальных не сокращенных дробей.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: 3/4 vs 0.75
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.07.21 09:40
Оценка:
Здравствуйте, Homunculus, Вы писали:

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


Как в одно число засунуть два числя? Никак!

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


Это два числа, даже если они упакованы в 4 байта.
Re[2]: 3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 09:41
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Как в одно число засунуть два числя? Никак!


Спорное утверждение. Хочешь сказать, что "3/4" — это не "число", а "действие"?
Re[4]: 3/4 vs 0.75
От: ути-пути Россия  
Дата: 01.07.21 09:42
Оценка:
Здравствуйте, Dair, Вы писали:

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


Вроде могут быть нюансы со специальными значениями типа nan, inf и т.п.?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: 3/4 vs 0.75
От: Maniacal Россия  
Дата: 01.07.21 09:43
Оценка:
Здравствуйте, Лось Чтостряслось, Вы писали:

ЛЧ>Здравствуйте, Qt-Coder, Вы писали:


ЛЧ>>>нет такого числа

QC>>Есть 3.399999999999 ?

ЛЧ>типа того


Округляется на раз-два
Re[3]: 3/4 vs 0.75
От: ути-пути Россия  
Дата: 01.07.21 09:48
Оценка: +1
Здравствуйте, Homunculus, Вы писали:

H>Спорное утверждение. Хочешь сказать, что "3/4" — это не "число", а "действие"?


Это запись числа; если подумать, 0.75 — это ведь еще большая условность.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: 3/4 vs 0.75
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.07.21 09:49
Оценка: +2
Здравствуйте, Homunculus, Вы писали:

Pzz>>Как в одно число засунуть два числя? Никак!


H>Спорное утверждение. Хочешь сказать, что "3/4" — это не "число", а "действие"?


Я хочу сказать, что 3/4, чем бы оно не было, состоит из двух независимых параметров. Технически их можно засунуть в 4 байта, если разрядов хватает дня представления обоих параметров с приемлимой точностью (например, разбросав по разрядам, не важно, в двоичной записи или в десятичной). Но оно от этого не перестанет быть двумя независимыми параметрами.
Re[8]: 3/4 vs 0.75
От: rg45 СССР  
Дата: 01.07.21 09:50
Оценка:
Здравствуйте, ути-пути, Вы писали:

УП>Тогда тебе плавающая точка не подходит, только в виде изначальных не сокращенных дробей.


Ну, плавющую точку от него требует его framework, а он может вполне совместить в памяти (union, reinterpret_cast и т.п.) float и пару целых чисел подходящего размера и на своей стороне работать с этой парой. Нужно только позаботиться, чтоб в NaN-ы не залетать.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 01.07.2021 9:53 rg45 . Предыдущая версия . Еще …
Отредактировано 01.07.2021 9:52 rg45 . Предыдущая версия .
Отредактировано 01.07.2021 9:51 rg45 . Предыдущая версия .
Re[7]: 3/4 vs 0.75
От: pagid Россия  
Дата: 01.07.21 09:50
Оценка: +3
Здравствуйте, Homunculus, Вы писали:

H>Как раз вопрос и был задан, потому что это и важно

Тогда и храни два числа. А как, это в зависимости в каких они пределах могут изменяться. 3004 вполне годный вариант, если для знаменателя достаточно трех десятичных разрядов. Некрасивое решение? А оно некрасивое по причине необходимости использовать float, то есть уже кривое и записью "3004" кривее/некрасивее не сделаешь.
Re[5]: 3/4 vs 0.75
От: Dair Россия  
Дата: 01.07.21 09:50
Оценка: +1
Здравствуйте, ути-пути, Вы писали:

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

УП>Вроде могут быть нюансы со специальными значениями типа nan, inf и т.п.?

нам то что оно float вообще не очень интересно, поэтому и nan/inf тоже. Для нас это 64 бита, которые мы как хотим так и рассматриваем:

auto myValues = (uint64_t)floatTag;
uint32_t numerator = myValues >> 32;
uint32_t denominator = myValues & 0xFFFFFFFF;


или даже

auto myValues = (uint64_t)floatTag;
uint32_t numerator = 0;
uint32_t denominator = 0;

memcpy(&floatTag, &denominator, 4);
memcpy(((char*)&floatTag) + 4, &numerator, 4);


А, да, если этот float десериализуется из строчки, или ещё где-то участвует в операциях с плавающей точкой, тогда бОльшая беда, конечно. Тогда тупо математикой — про порядок забиыть, пользоваться мантиссой в десятичном представлении, как тс изначально писал — числитель*выбранное смещение + знаменатель.
Отредактировано 01.07.2021 9:56 Dair . Предыдущая версия .
Re[6]: 3/4 vs 0.75
От: Homunculus Россия  
Дата: 01.07.21 09:54
Оценка:
Здравствуйте, Dair, Вы писали:

Слуш, вопрос не в тему. Увидел твою подпись. У тебя действительно такая необычная двойная фамилия? А почему так получилось? Если я конечно не лезу не в свое дело, просто интересно. Нисколько не хотел задеть вопросом.
Re[3]: 3/4 vs 0.75
От: Maniacal Россия  
Дата: 01.07.21 09:59
Оценка: 2 (2)
Здравствуйте, rg45, Вы писали:

R>И что делать, если нужно 3 и 40?


3.04?

отзеркалить
Re[5]: 3/4 vs 0.75
От: pagid Россия  
Дата: 01.07.21 10:00
Оценка:
Здравствуйте, ути-пути, Вы писали:

УП>Вроде могут быть нюансы со специальными значениями типа nan, inf и т.п.?

И поэтому не стоит играться с битами или пытаться объединить union'ом. Нужно как и изначально предложил ТС самому себе и нам преобразовывать в целое, а его уже во float и обратно (если нужно). Оценить конечно область допустимых значений и при преобразовании из float округлять, а не отбрасывать, но эту уже капитанствую.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.