Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Casting in Java

  1. #1
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465

    Casting in Java

    Chi mi spiega da dove salta fuori il numero 67?

    codice:
    class Conversion {
      public static void main(String args[]) {
        byte b;
        int i = 257;
        double d = 323.142;
        
        System.out.println("\nConversion of int to byte.");
        b = (byte) i;
        System.out.println("i and b " + i + " " + b);
    
        System.out.println("\nConversion of double to int.");
        i = (int) d;
        System.out.println("d and i " + d + " " + i);
    
        System.out.println("\nConversion of double to byte.");
        b = (byte) d;
        System.out.println("d and b " + d + " " + b);
      }
    }
    257/(127+128) =~ 1 (ok!)
    323.142/(127+128) =~ 1 (Perché 67 ???)

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    sei sicuro che

    codice:
    int i = 257;
    
    byte b = (byte) i;
    avviene senza perdita di informazioni?
    RTFM Read That F*** Manual!!!

  3. #3
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    Sono sicuro del contrario ma non era questa la mia domanda oppure non ti seguo.


  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    per codificare un byte ci vogliono 8 bit, quindi un byte rappresenta valori (assoluti) da 0 a 255, 257 in ogni caso sei fuori dal range di un byte.
    Se consideri i segni vai da -128 a +127 la cui somma dà toh 255.
    257 il cast avviene, ma con perdita di informazioni (come è giusto che sia).
    Anche quando fai un cast da double a int lo fai con perdita di informazioni (questo dovrebbe prendere solo la parte intera di un valore rappresentabile con 32 bit).

    Il terzo cast è (per tipologia di errore) simile al primo
    RTFM Read That F*** Manual!!!

  5. #5
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    ok, sono un idiota, ora ho anche capito questo, grazie infinite


  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da peruzzo
    ok, sono un idiota, ora ho anche capito questo, grazie infinite

    non sei un idiota, semplicemente è facile dimenticare queste cose, ma credo che d'ora in poi ti rimarranno scolpite in testa :P

    ps io quando ho dubbi, manuale java dimensione variabili e vedo se per caso esco dal range (e questo può portare errore)

    Buona giornata
    RTFM Read That F*** Manual!!!

  7. #7
    Utente bannato
    Registrato dal
    Sep 2012
    Messaggi
    465
    grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.