Domanda

Quando si utilizza double.Parse, che sembra piacere a stringa via qualsiasi finali (insignificanti) zeri dalla stringa che sto convertendo. Vorrei double.Parse tenere in posti dopo la virgola. Ad esempio, ecco un po 'di codice:

tobereturned.MouseSensitivty = double.Parse(String.Format("{0:#.##}", tempstring[1]));
Debug.WriteLine("Converted " + String.Format("{0:#.##}", tempstring[1]) + " to " + tobereturned.MouseSensitivty);

Il Debugger quindi scrive

  

Convertito 4,00-4

Così sembra double.Parse è a fare qualcosa di sospetto qui. Post scriptum MouseSensitivity è anche di tipo doppio, quindi non posso fare alcuna operazione di stringa su di esso.

È stato utile?

Soluzione

La tua domanda è priva di significato. Doppio no sono "luoghi dopo la virgola", in primo luogo. Non conservare tutto ciò che sembra a distanza come una "rappresentazione decimale di un numero" internamente. In realtà, essi non conservare niente internamente che guarda anche come testo riconoscibile.

Si segnala 4 perché 4.00 è esattamente uguale a 4. Si sta visualizzando il numero "esattamente quattro con nessuna parte frazionaria" come testo base alle sue regole predefinite per la conversione dei numeri in testo.

Si prega di leggere questo . Sì, è lunga e difficile, ma semplicemente non è possibile utilizzare in virgola mobile tipi numerici correttamente senza un reale comprensione di questo materiale - e non lo fa importa quale lingua si sta utilizzando, sia.

Altri suggerimenti

Il tipo di dati double è semplicemente un numero; esso non tiene traccia della stringa che è stato analizzato per creare il valore. La sua rappresentazione di stringa entra in gioco quando .ToString() viene chiamato solo.

Se si sa che si desidera sempre due cifre dopo la virgola è possibile fare di riempimento con zeri.

Non è il lavoro del tipo a doppio per tenere traccia del vostro formato di visualizzazione desiderato.

Doppia non memorizza zeri ridondanti. Secondo lei o il livello di presentazione, si potrebbe desiderare di formattarlo per mostrare che si desidera che appaia, ad esempio, String.Format ( "{0:. # ##}", doubleVariable)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top