【发布时间】:2020-07-22 07:20:54
【问题描述】:
我正在从 Excel 文件中读取数据,数据值为 0.0000000001。当它从 C# 中读取时,该值返回为 1E-10。单元格值为row.Cells[2].Value = 1E-10
我尝试从其他帖子中首先转换为小数:
decimal h1 = Decimal.Parse(row.Cells[2].Value.ToString(), System.Globalization.NumberStyles.Any);
这里h1 = 0.0000000001 符合预期。
我需要双倍的值,所以我做了:
Double val1 = Decimal.ToDouble(h1);
但是val1 现在又回到了 1E-10
如何将值保持为 double = 0.0000000001?
请测试以下代码的 sn-p 以说明问题所在:
十进制 t1 = Decimal.Parse("1E-10", System.Globalization.NumberStyles.Any); 双 t2 = Convert.ToDouble(t1);
您将看到 t1 = .0000000001 和 t2 = 1E-10
【问题讨论】:
-
你不能 keep
doubleas0.0000000001,但你可以表示:Console.Write(val.ToString("f10"));这里f10格式表示“小数点后10位" -
但我需要将一个双精度值传递给一个类。我真的不在乎它的样子。
-
好吧,
0.0000000001 == 1e-10(1e-10是1乘以10的-10th 次方)所以你什么也做不了;两个值相等 -
我明白这一点,但下行蒸汽系统无法处理 1E-10。一定有解决办法。
-
我认为您混淆了双 显示时的外观 以及 实际 值是什么。
标签: c# data-conversion