Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C#] Punto e virgola

    Quando inserisco in un numero un punto e poi lo converto con single.parse mi succede che viene tramutato in un numero intero e nn in un decimale, al contrario se metto la virgola mi viene un numero decimale. Esiste qualcosa per dire il punto è punto e la virgola è cmq punto dove punto è il separatore decimale?

  2. #2
    Ehm, se ti puoi spiegare un pochino meglio ti si può rispondere, la prima parte del post è comprensibile, dopo però non capisco cosa chiedi

  3. #3
    Cioè penso che sia un problema di globalizzazione. Ossia come faccio a decidere e capire qual'è il separatore decimale di windows? E come faccio a impostarne uno nella mia applicazione in un modo del tutto indipendente se metto , o .?

  4. #4
    Effettivamente è problematica la situazione, i diversi linguaggi di programmazione ammettono come virgola o la virgola, effettivamente, o il punto.

    Il problema si pone quando devi inserire o lavorare una cifra, come fare se l'utente mette un . invece di una virgola o viceversa?

    Nel nostro caso il C# come separatore per i decimali usa il punto.

    Ad esempio, se nel codice devi mettere 6,5 dentro una variabile float devi scrivere:

    float f = 6.5F; (la F alla fine è obbligatoria, altrimenti ti da errore).

    Però, da quel che ho visto, il C#, quando prende un numero decimale da una stringa, a quel punto pretente una virgola.

    Es. float f = float.Parse("6,5");

    Ti mostro alcune prove che ho fatto:

    float f = float.Parse("6.000,5"); -> 6000,5
    float f = float.Parse("6.00.0,5"); -> 6000,5
    float f = float.Parse("6000.5"); -> 60005
    float f = float.Parse("6.000,5.5"); -> Errore

    Come vedi, i punti (tranne se li metti dopo la virgola) non li considera proprio e prende per buona la virgola.

  5. #5
    Ma secondo te dipende da un problema di globalizzazione? Cioè è dipendente dalle impostazioni internazionali di windows? oppure è standard come cosa?

  6. #6
    Bhè, questo non te lo so dire, secondo me potrebbe dipendere da questo fatto:

    Molti utenti potrebbero tentare di inserire un numero, ad esempio da una textbox, con i separatori delle migliaia; notoriamente i separatori delle migliaglia sono i punti.

    Quindi, prese una stringa di un numero contente punti, lui semplicmente li elimina, in quanto superflui.

    Nel codice di C# non è ammissibile accettare un codice così:

    float f = 6,5F;

    Perchè, almeno secondo me, la virgola, a meno che non venga inclusa in una stringa, è un carattere speciale del C# (come daltronde per il 99,9% dei linguaggi di programmazione), serve infatti a separare i parmatri delle funzioni e metodi.

    Quindi nel codice scrivero 6.5F ma da quel momento in poi, a prescindere da come lui se lo tenga in memoria, la sua rappresentazione testuale è 6,5

    Ad esempio anche l'excel se tu, dal tastierino numerico premi il punto, te lo commuta in una virgola.

    Inoltre se tu lavori sui numeri decimali in excel e forzi il punto scrivendolo dalla tastiera alfanumerica, lui lo lascia come punto, ma da quel momento per lui la cella non è più numerica ma alfanumerica e addio tutte le formule.

    Ciao!

  7. #7
    CIao a tutti, sono capitato in questa discussione in quanto ho il seguente problema.

    UNA NOSTRA APPLICAZIONE c# (NON SVILUPPATA DA NOI) non controllava in fase di inserimento il carattere '.' e ',' .

    L'applicazione web prevedeva una serie di text box dove gli utenti devono inserire dei valori numerici con la virgola (misurazioni in centimetri)

    Purtroppo ci siamo accorti che molti utenti inserivano i valori o con il '.' o con la ','

    esempio

    2.5 oppure 2,5



    Risultato: i numeri inserirti con il punto vengono salvati diverasamente sul DB (sql server),per esempio, vengono aggiunti decimali (3.6 --> 3,06)

    Abbiamo segnalato agli sviluppatori il problema , ed è stato risolto

    Domanda:
    per i dati precedentemente inseriti c'è la possibilità di recuperare il valore corretto?

    grazie!

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ti pare che sia giusto riesumare una discussione di 3 anni fa per una domanda appena appena pertinente? apri una nuova discussione!

  9. #9
    Beh, mi sembra che il problema è molto simile ......

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    anche se è simile non si riesumono i thread morti da anni.. dovrebbe essere scritto pure nel regolamento

    edit: è il punto uno fa te

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.