2016-10-24 31 views
0

私は、データ型Double.Parse精度/丸めの問題

進(24,10)

でデータベース内の1つの列を持っている私が値

のような文字列D1を持っているとしましょう= "123.6666666666";

Double.Parse(d1) 

のDataColumnでの出力:123.6666666700

私は出力123.6666666666を与えるConvert.ToDecimal(d1)を使用していました。

予想される出力:123.7000000000

+0

可能な複製(http://stackoverflow.com/questions/6190120:MSDNのリンクをチェックし、恐らくMath.roundの詳細については

Math.Round(Convert.ToDecimal(d1),1) 

が必要/倍精度を返す精度差) – Magnetron

+0

@ Magnetron今質問を確認してください。 – Mukund

+1

Math.Round(Convert.ToDecimal(d1)、1) – Cato

答えて

1

あなたが得た出力は、ダブル、小数点以下の値のため、精度です。

Math.Round(Double.Parse(d1),1) 

または、あなたの場合:何actualy欲しいのは、そのためにあなたは、このように、あなたのニーズに応じて、いずれかをダブルまたは小数で、恐らくMath.roundを使用する必要があり、1小数の桁に数値を四捨五入することです[精度差を返すdouble.parse]の https://msdn.microsoft.com/pt-br/library/75ks3aby(v=vs.110).aspx

+0

doubleとdecimalの精度はどのくらいですか? – Mukund

+0

@ムクンドダブル:15-16桁。小数点:28〜29桁有効桁。 https://msdn.microsoft.com/pt-br/library/678hzkk9.aspx https://msdn.microsoft.com/library/364x0z75.aspx完全な値を保持し、1桁しか表示しない場合は、 .ToString( "0.#")を使用します。 – Magnetron