Qualcuno usa Ceiling e * not * lo lancia immediatamente su un numero intero?

6

Penso che ogni volta che ho usato Math.Ceiling o la sua variante linguistica, ho sempre dovuto lanciarlo su un numero intero. Voglio dire ... questo è il punto, non è vero? Per ottenere un numero intero. Quindi, perché non restituisce solo int ?

    
posta mpen 25.11.2010 - 21:33
fonte

2 risposte

11

Per esempio, REAL / FLOATs hanno solitamente una gamma molto più ampia. Il risultato potrebbe non rientrare in un INTEGER.

    
risposta data 25.11.2010 - 21:43
fonte
2

Smalltalk's fa.

100000000000000000000.5 ceiling => 100000000000000000000

100000000000000000000 è un oggetto LargePositiveInteger, ovvero un numero intero che utilizza più di 32 bit nella sua rappresentazione.

Come sottolinea Michael, la risposta sopra è sbagliata. Non ho notato che mentre la risposta era un numero intero la risposta era sbagliata perché il galleggiante perde precisione. Quindi, ecco un'altra versione CORRETTA, che funziona perché non utilizziamo i float:

(100000000000000000000 + (1 / 2)) ceiling => 100000000000000000001
    
risposta data 26.11.2010 - 01:09
fonte

Leggi altre domande sui tag