c++ - online - ¿Por qué no hay una flotación de 2 bytes y ya existe una implementación?



c++ pdf (4)

Bien,

Si tiene poca memoria, ¿consideró abandonar el concepto de flotación? Los flotadores usan una gran cantidad de bits solo para guardar donde está el punto decimal. Puede solucionar esto si sabe dónde necesita el punto decimal, digamos que desea guardar un valor en dólares, solo puede guardarlo en Centavos:

uint16_t cash = 50000;
std::cout <<"Cash: $"<< (cash / 100) <<"."<< (cash % 100) << std::endl;

Eso es, por supuesto, solo una opción si es posible predeterminar la posición del punto decimal. Pero si puedes, siempre lo prefieres, ¡porque esto también acelera todos los cálculos!

rgds, kira :-)

https://code.i-harness.com

Suponiendo que estoy realmente presionado por la memoria y quiero un rango más pequeño (similar a corto vs int). Los lenguajes Shader ya admiten la half para un punto flotante con la mitad de la precisión (no solo convertir hacia adelante y hacia atrás para que el valor esté entre -1 y 1, es decir, devolver un valor flotante como este: shortComingIn / maxRangeOfShort ). ¿Hay alguna implementación que ya exista para un flotador de 2 bytes?

También me interesa conocer las razones (históricas?) De por qué no hay una flotación de 2 bytes.



Probablemente hay una variedad de tipos en diferentes implementaciones. Un flotante equivalente a stdint.h parece una buena idea. Llama (alias?) Los tipos por su tamaño. (¿float16_t?) Un flotador de 4 bytes es solo ahora, pero probablemente no se reducirá. Los términos medio y largo casi no tienen sentido con el tiempo. Con computadoras de 128 o 256 bits podrían llegar a significar cualquier cosa.

Estoy trabajando con imágenes (1 + 1 + 1 byte / píxel) y quiero expresar el valor de cada píxel en relación con el promedio. Por lo tanto, punto flotante o punto fijo cuidadosamente, pero no 4 veces más grande que los datos en bruto, por favor. Un flotador de 16 bits suena bien.

Este GCC 7.3 no sabe "la mitad", tal vez en un contexto C ++.






c++