tipos entero sin signo tienen dos propiedades importantes que los diferencian de los tipos de enteros con signo: "desplazado" rango (sin subrango negativo, pero positivo subrango el doble de ancho) y la aritmética de módulo. Para tipos enteros, estas propiedades son lo suficientemente importantes como para justificar la existencia de tipos sin firmar.
Con los tipos flotantes, ninguna de estas propiedades es inmediatamente aplicable. Con los tipos de punto flotante, el problema principal no está en su rango (para muchos propósitos se puede pensar que es prácticamente infinito), sino más bien en precisión. Y la aritmética de módulo no es naturalmente aplicable a tipos no enteros. Por esta razón, no tenía mucho sentido introducir tipos de punto flotante sin signo, es decir, no tenía mucho sentido cambiar el papel de solo un bit en la representación de coma flotante.
También se debe tener en cuenta que el razonamiento anterior probablemente se debe usar como argumento detrás de la introducción de tipos enteros sin firmar (y no introducir tipos de punto flotante sin signo) en hardware popular y los correspondientes estándares derivados de hardware. Lo que tenemos en C y C++ fue esencialmente heredado de las capacidades de hardware y estos estándares.
Por supuesto, desde el punto de vista conceptual if view, sería bastante lógico tener tipos de punto flotante sin firmar en el idioma, solo por el bien de la coherencia. Pero, por desgracia, no están allí.
@Greg Hewgill: Sí, cambió el amigo del título. – Chubsdad
@Greg Hewgill: actualizado según sus comentarios. – Chubsdad
Los literales de punto flotante siempre se firman en términos de * tipo *. Si prefijos explícitamente con +/- no cambia eso y el sufijo con U o LU como lo harías con un literal entero para forzar el tipo es un error. – Clifford