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

Posted

技术标签:

【中文标题】从科学记数法到十进制记数法的数值【英文标题】:Number value from Science Notation to Decimal Notation 【发布时间】:2017-11-16 14:15:14 【问题描述】:

当我将这些数据加载到我的双变量中时,我有很多科学记数法数据,一切正常(在 VS 中,我看到值 0.00000000022)。但是当我将此数字乘以 1000000 时,我得到了未舍入的值(0.00021999999999999998)。

我必须乘以这个值,因为我将它用于选择过滤器。从选择过滤器发送数据后,我再次将此数据划分为我的原始格式 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();

【问题讨论】:

floating-point-gui.de 或甲骨文:What Every Computer Scientist Should Know About Floating-Point Arithmetic 另见:***.com/questions/618535/… 不会将 s.Resistance * 1000000 转换为 System.Decimal 并应用 Round(请参阅 link 解决问题? 【参考方案1】:

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

使用十进制类型而不是双精度来快速求解:)

【讨论】:

我这样解决了这个问题,多么容易:D var x = y.Select(s => (decimal) s.Resistance * 1000000).Distinct();

以上是关于从科学记数法到十进制记数法的数值的主要内容,如果未能解决你的问题,请参考以下文章

go语言基础之格式化输出

使用ggplot从科学记数法转换为十进制

如何将科学记数法转换为十进制记数法?

科学记数法到十进制

将不同的数字转换为小数 C#(科学记数法到十进制)

2019-2020-1学期 20192419 《网络空间安全专业导论》第一周学习总结 (读书心得)