Lo so, la domanda sembra essere strana. I programmatori a volte pensano troppo. Per favore continua a leggere ...
In CI uso signed
e unsigned
numeri interi molto. Mi piace il fatto che il compilatore mi avverta se faccio cose come l'assegnazione di un numero intero con segno a una variabile senza segno. Ricevo degli avvisi se confronto gli interi con segno e molto altro.
Mi piacciono questi avvertimenti. Mi aiutano a mantenere il mio codice corretto.
Perché non abbiamo lo stesso lusso per i galleggianti? Una radice quadrata sicuramente non restituirà mai un numero negativo. Ci sono anche altri posti in cui un valore float negativo non ha significato. Candidato perfetto per un galleggiante non firmato.
A proposito - Non sono davvero entusiasta del singolo extra di precisione che potrei ottenere rimuovendo il bit di segno dai float. Sono molto contento di float
come sono adesso. Vorrei solo contrassegnare un float come non firmato a volte e ottenere lo stesso tipo di avvisi che ricevo con numeri interi.
Non sono a conoscenza di alcun linguaggio di programmazione che supporti numeri in virgola mobile non firmati.
Qualche idea sul perché non esistano?
MODIFICARE:
So che la FPU x87 non ha istruzioni per gestire i float senza segno. Consente solo di utilizzare le istruzioni float firmate. L'uso improprio (es. Andando sotto lo zero) potrebbe essere considerato un comportamento indefinito allo stesso modo in cui l'overflow degli interi con segno non è definito.