C#科学计数法(如:1.2E+06)字符串转化decimal类型失败的处理

更新时间:2023-07-26 18:56:45 阅读: 评论:0

C#科学计数法(如:1.2E+06)字符串转化decimal类型失败
的处理
最近遇到⼀个项⽬,需要⽐较两个科学计数法(如:1.2E+06)字符串的⼤⼩,使⽤float.TryPar()进⾏转化,发现⽐较结果发现会出现不正常的情况。
孕妇胎教音乐原因:float的精度很低,当⼩数点超过7位之后,两个⼩数⽐较后的结果可能就会不⼀样了。
后来考虑到⼗进制数decimal,精度极⾼。货币(money)就是对应的decimal类型。尝试使⽤decimal.TryPar().
初始代码⽚段如下:
string s = "2.3456789E+06";
decimal ocvValue;
decimal.TryPar(s, out ocvValue);
Console.WriteLine(ocvValue);
运⾏结果如下:
结果居然是 0
原因:科学记数法本质是浮点数的表⽰⽅式,对应float和double类型,本质是⼆进制。
⽽decimal是⼗进制⼩数,本质是⼗进制。因此会出现转化失败的问题。如需转化,就需要先转化位d
ouble类型,然后强制转化为decimal
支付宝怎么绑定银行卡可以尝试使⽤如下代码:
using System;
namespace ConsoleDecimalDemo
{
class Program
{
static void Main(string[] args)
{
string s = "2.3456789E+06";
bool result = float.TryPar(s, out float f);
乘加乘减应用题
Console.WriteLine($"【科学记数法转化为float】转化是否成功【{result}】,结果【{f}】");
result = double.TryPar(s, out double d);
Console.WriteLine($"【科学记数法转化为double】转化是否成功【{result}】,结果【{d}】");
result = decimal.TryPar(s, out decimal m);
Console.WriteLine($"【科学记数法转化为double】转化是否成功【{result}】,结果【{m}】");
事故经过怎么写Console.WriteLine("------------------如果科学计数法字符串转化为decimal,请先转化为double,然后再强制转化为decimal-----------------------");            decimal destValue = (decimal)d;
Console.WriteLine($"⽬标⼗进制⼩数【{destValue}】");
白屏图片Console.WriteLine(Convert.ToDecimal(d));
Console.WriteLine($"也可以直接使⽤如下代码:");
try
{
decimal dm = decimal.Par(s, System.Globalization.NumberStyles.Float);
手工制作垃圾桶Console.WriteLine(dm);
}
catch (Exception ex)
{
Console.WriteLine($"转换时出现异常:{ex.Message}");
}
光圈和快门
Console.ReadLine();
}
}
}
保留意见运⾏效果如图:

本文发布于:2023-07-26 18:56:45,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1097717.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转化   科学   类型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图