Double.Parseが小数点以下の後期のゼロを除去するのを防ぎますか?
-
08-10-2019 - |
質問
double.parseを使用する場合、私が変換している文字列から、後続の(取るに足らない)ゼロを縛り付けるのが好きなようです。 Decimalの後にDouble.Parseを場所に維持したいと思います。たとえば、ここにいくつかのコードがあります:
tobereturned.MouseSensitivty = double.Parse(String.Format("{0:#.##}", tempstring[1]));
Debug.WriteLine("Converted " + String.Format("{0:#.##}", tempstring[1]) + " to " + tobereturned.MouseSensitivty);
その後、デバッガーは書き込みます
4.00から4に変換されました
したがって、double.parseのようです は ここで怪しい何かをしています。 PS MouseSensitivityはタイプのダブルであるため、文字列操作はできません。
解決
あなたの質問は無意味です。ダブルはそうではありません 持ってる そもそも「小数の後の場所」。彼らは、内部的に「数字の小数表現」のようにリモートで見えるものを保存しません。実際、彼らは認識可能なテキストのように見えるものさえ内部的に保存しません。
4.00が正確に4に等しいため、4を報告します。これは、数値をテキストに変換するためのデフォルトのルールに従って、テキストとして「正確に4つの分数部分なしで4つ」を表示しています。
読んでください これ. 。はい、それは長くて難しいですが、浮動小数点数値タイプを使用することは単に不可能です ちゃんと なしで 本当の理解 この素材の - そして、あなたが使用している言語も関係ありません。
他のヒント
double
データ型は単なる数字です。値を作成するために解析された文字列を追跡しません。その文字列表現は、いつでも作用します .ToString()
呼ばれています。
小数点以降に常に2つの場所が必要な場合は、ゼロを右フィルできます。
目的のディスプレイ形式を追跡するのは、ダブルタイプの仕事ではありません。
doubleは冗長なゼロを保存しません。あなたのビューまたはプレゼンテーションレイヤーでは、それが表示されたいことを示すためにフォーマットすることをお勧めします。