Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229

    Separatore cifre decimali

    È possibile sapere, da uno script lato client in js o vbs, quale separatore per le cifre decimali è utilizzato dal sistema?

  2. #2
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    Ho pensato ad una funzione del genere (che comunque mi dice soltanto quale separatore posso usare nelle conversioni da stringa o variant a numero, e solo tra la virgola e il punto). In vbs si potrebbe fare una cosa simile utilizzando il cdbl().

    codice:
    function decimalSep() {
    	if(Number("3.3")==3.3) return ".";
    	else return ",";
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Solo una mia riflessione, non vuole essere nemmeno un consiglio, dato che non conosco l'argomento.

    Ho l'impressione che stai confondendo la visualizzazine dei numeri decimali con la loro codifica.

    Il fatto che il simbolo separatore dei decimali venga visualizzato come punto, come virgola, o altro simbolo dipende dalle impostazioni del SO. In windows si possono settare, e allora tutti i numeri decimali verranno visualizzati con tale simbolo, ma il numero e` comunque un numero decimale.


    Diverso e` il problema per la conversione dei campi di input di un form: in tal caso il campo e` una stringa, che deve venir convertita in un numero. E` chiaro che parseFloat() non va bene, ma si puo` far precedre un filtro, che converte l'eventuale virgola in punto:

    var letto = document.NOMEFORM.NOMECAMPO.value; // questa e` una stringa
    var conv = letto.replace (/\,/, "."); // se c'e` virgola viene convertita
    var num = parseFloat(conv);

    Questo programma legge correttamente sia la virgola che il punto (chiaramente non si possono usare i punto come separatori delle migliaia).

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    Stavo parlando della visualizzazione. Quando ho scritto quel codice, pensavo a qualcosa che potesse dirmi con quale carattere ricevo un errore durante una conversione, e che in effetti non serve a molto nel mio caso, essendo chiaro che i float devono comunque utilizzare il punto come separatore. Lo script non mi occorre per una vera e propria conversione né per un form, ma per poter effettuare dei replace su una stringa che deve essere inserita in un database; in uno dei passaggi per fare questo mi interessa sapere qual'è il separatore utilizzato del sistema operativo per la visualizzazione delle cifre decimali sulla macchina dell'utente da cui proviene il dato. In Italia è molto probabile che il separatore sia la virgola, ma non si può mai sapere, e preferisco comunque fare in modo che il programma possa accettare qualsiasi carattere.

  5. #5
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    Una curiosità sul vbs:
    codice:
    alert(cdbl("10.8")) ' restituisce 108
    alert(cdbl("10,8")) ' restituisce 10.8 (anzi, 10,8)
    Inizialmente il dubbio sul fatto che il separatore impostato per la visualizzazione potesse influire sulle conversioni mi era venuto lavorando in vbs e facendo una cosa del genere. Dovrei vedere cosa succede cambiando i separatori...

  6. #6
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    Ecco cosa dice l'MSDN a proposito della funzione CDbl nella sezione Visual Basic Scripting Edition:
    For example, different decimal separators and thousands separators are properly recognized depending on the locale setting of your system.
    A quanto sembra, il vbs utilizza le impostazioni di sistema dei separatori per le conversioni. Dovrei aver risolto:
    codice:
    Function decimalSep()
    	If CDbl("3.3")=3.3 Then
    		decimalSep="."
    	Else
    		decimalSep=","
    	End If
    End Function
    E se la funzione mi serve in js?

  7. #7
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    up

  8. #8
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    up

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da daneel
    Function decimalSep()
    If CDbl("3.3")=3.3 Then
    decimalSep="."
    Else
    decimalSep=","
    End If
    End Function

    E se la funzione mi serve in js?
    Non credo che puoi fare la stessa cosa in JS, comunque la conversione "letterale" del codice e`:
    codice:
    var decimalSep; 
    function decimalSep() {
      if(ParseFloat("3.3") == 3.3) decimalSep = ".";
      else decimalSep = ",";
    }
    Puoi anche pensare ad una conversione di questo tipo:
    codice:
    var decimalSep; 
    function decimalSep() {
      if(ParseFloat("3.3") == 3.3) decimalSep = ".";
      else if(ParseFloat("3,3") == 3.3) decimalSep = ","; 
      else decimalSep = "altro";
    }
    Nota: la definizione della varibaile e` fuori dalla funzione, per renderla globale.

    Secondo quanto io so di JS, ti restituisce sempre il punto, indipendentemente dalle impostazioni di windows o del browser.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    Dunque la stranezza è solo delle funzioni di conversione del vbs. Dubitavo potesse essere ottenuta una cosa del genere in js.
    Comunque, ora imposto il punto come separatore e non se ne parla più.
    Grazie Michele.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.