如何正确地将十进制值转换为指数和指数为十进制?

时间:2014-10-15 05:21:17

标签: c# decimal

我正在尝试十进制到指数转换

decimal Additive = 0.083333001;
string expoAdditive = string.Format("{0:#.0#E-00}",Additive);
// I got this value :8.33E-02

// exponential to decimal conversion
decimal num = decimal.Parse(expoAdditive, System.Globalization.NumberStyles.Any);
// I got this value num = 0.0833 which is wrong. I need my correct value (0.083333001)

1 个答案:

答案 0 :(得分:0)

您需要在格式化字符串中提供足够的精度。否则,当您解析字符串以尝试恢复该值时,它就不存在。

您的问题并不清楚为什么您使用的是格式字符串。但要获得必要的7位精度以适应8.3333001的小数部分,您需要在格式中指定7个显式位置(例如" {0:#。0 ###### E-00} "),或者只使用" {0:E7}"的简化格式字符串。

当然,如果您还有其他数字,您还需要处理具有更多有效数字的数字,那么您必须相应地调整精度。在每种情况下,七位数可能或不足够。