从科学记数法到十进制表示法的数字值

时间:2017-11-16 14:15:14

标签: c# linq razor number-formatting

当我将这些数据加载到我的双变量中时,我在Science表示法中有很多数据,一切正常(在VS中我看到值 0.00000000022 )。但是当我将这个数乘以1000000时,我得到了非基数值( 0.00021999999999999998 )。

enter image description here

我必须将此值相乘,因为我将其用于选择过滤器。从选择过滤器发送数据后,我再次将此数据分为原始格式0.00021999999999999998 / 1000000 = 0.00000000022。

  

2.20E-10 = 0.00000000022 * 1000000 = 0.00021999999999999998

期望值是:

  

0.00021999999999999998 => 0.00022

当我使用类似的数字时,例如,2.70E-10我得到多个值0.00027(在这种情况下转换工作正常)。

仅转换值以在选择菜单中使用,以便不显示不必要的零,并且标签指示它们代表的单位。 (对于此示例,从选择框中的Ohm到microOhm)

有没有办法正确转换这些值?

我使用LINQ来转换这个值,如下所示:

var x = y.Select(s => s.Resistance * 1000000).Distinct();

1 个答案:

答案 0 :(得分:2)

问题是浮点数,关于此问题的好文章是link

使用十进制类型代替double来快速求解:)