У меня есть большой массив с плавающей точкой, но мне не нужна вся 32-разрядная точность и вам нужно сохранить ram, поэтому я использую unsigned short type, так как мне нужно всего 2 десятичных знака max dont excedd 654.unsigned short to custom float 16 bit
Так что единственное, что я должен сделать для каждого пользователя, - умножить на 0.01;
Есть ли способ создать тип для этого, используя typedef или union или struct, не теряя при этом плунжер и экономя максимум процессора?
, что у меня сейчас есть это, а не центральный процессор дружественным Я думаю
vector<unsigned short> vect(bigvalue);
for(int i=0;i<bigvalue;i++)(vect[i]*0.01)*some expression...
То, что я хочу, это какое-то типа, которым возвращение уже умноженное на 0,01 не теряют оперативной памяти
vector<float16bit> vect(bigvalue);
for(int i=0;i<bigvalue;i++)(vect[i])*some expression...
ли лучше путь?
Благодаря
В какой момент вам нужно преобразование в число с плавающей запятой? Или вам просто нужна математика с фиксированной точкой. Если вам просто нужно это для хранения, вы можете использовать что-то вроде 'struct myType {short storage; operator float() {return storage * 0.01;}}; '(думаю, вы также должны проверить выравнивание типа, чтобы убедиться, что ваш компилятор не атомизирует его в 4 байта) – PeterT