/// <summary>
/// 科学计数法值转换成正常值
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private object ValueScientificNotationConvert(JToken value)
{ if (value == null) return ;
string strData = "";
if (value.Type == JTokenType.String)
{
strData = value.ToString();
}
else
{
strData = value.ToString(Formatting.Indented);
}
Decimal dData = 0.0M;
try
{
if (strData.ToUpper().Contains("E"))
{
System.Globalization.NumberStyles sty = System.Globalization.NumberStyles.AllowExponent | System.Globalization.NumberStyles.AllowDecimalPoint;
try
{
dData = Decimal.Parse(strData, sty);
}
catch (Exception ex)
{
//转换成decimal溢出时,转换成字符串
if (ex is OverflowException)
return ValueScientificNotationConvert1(value);
} }
else
{
if (!decimal.TryParse(strData, out dData))
return null;
}
}
catch (Exception ex)
{
throw ex;
} return dData;
}
 /// <summary>
/// 科学计数法值转换成正常值字符串
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public string ValueScientificNotationConvert1(JToken value)
{
if (value == null) return "";
string s = "";
if (value.Type == JTokenType.String)
{
s = value.ToString();
}
else
{
s = value.ToString(Formatting.Indented);
}
string num = String.Empty; string[] arr = s.Split('E');
bool isPart1Double = double.TryParse(arr[], out var part1);
int decimalDigitCountInPart1 = arr[].IndexOf('.') == - ? : arr[].Length - - arr[].IndexOf('.'); string newPart2 = arr.ElementAtOrDefault();
bool isPart2Int = int.TryParse(newPart2, out var part2);
if (arr.Length == )
{
if (isPart1Double)
num = part1.ToString();
}
if (arr.Length == )
{
if (part2 < || part2 - decimalDigitCountInPart1 < )
{
if (isPart1Double && isPart2Int)
num = Decimal.Parse((part1 * Math.Pow(, part2)).ToString(), System.Globalization.NumberStyles.Float).ToString(); // 此时Math.Pow(10, part2)并不会越界,故可使用Decimal.Parse从scientific num转换为real num
}
else if (part2 - decimalDigitCountInPart1 >= )
{
num = part1.ToString().Replace(".", "") + new String('', part2 - decimalDigitCountInPart1 + ); // 避免越界,此处使用字符串拼接代替Math.Pow(10, part2),拼接还可用StringBuilder的append方法 } } return num;
}

c# 科学计数法值转换成正常值,返回字符串的更多相关文章

  1. Excel 科学计数法数值转换

    问题场景 如果导出的数据文件后缀为.CSV,一般数值类型的数据超过12位后,单元格的数据就用科学计数法来表示了. 比如身份证号.较长的id,数值会超过12位,而科学计数法表示,不方便查看或操作,很多情 ...

  2. php 解决返回数据 数字 变成科学计数法后转换问题

    链接 https://blog.csdn.net/liuxin_0725/article/details/81514961 问题 id int型 数字过长,json_decode的时候已经转成科学计数 ...

  3. java 科学计数法表示转换

    BigDecimal strScien = new BigDecimal("9.67953970412123E-05"); System.out.println(strScien. ...

  4. js 科学计数法 转换为 数字字符 突破幂数正数21位,负数7位的自动转换限制

    前天工作中要转换后台返回的一个数据,返回是的科学计算的数字字符,用网上能搜索到的常用两种方法转换会有倍数的限制,然后又搜索了很久,还是没有找到好的方法,虽然也有一些自己写的方法,可还是不能像下面两种方 ...

  5. js前端导出Excel表格后数字自动变成科学计数法问题

    一般的文件导出都是后端进行导出,最近一个项目遇到导出接口挂掉了,前端实现导出的情况. 背景是vue框架,iView组件.可以直接使用exportCsv方法进行导出. 导出时进行一下行和列的切割就可以了 ...

  6. 把一行数字(readline)读进List并以科学计数法输出(write)到文件

    主要过程是读取的时候是一行字符串,需要Strip去除空格等,然后split变成一个List. 注意这时候数据结构是List但是每一个元素是Str性质的. 所以需要map(float,List)  把这 ...

  7. js 科学计数法

    function convertNum(num_str){ //参数必须为 字符串 //科学计数法字符 转换 为数字字符, 突破正数21位和负数7位的Number自动转换 // 兼容 小数点左边有多位 ...

  8. PHP的两个科学计数法转换为字符串的方法

    不常用,所以整理在这里,分享给同行使用 方法一:取尾数法 public function NumToStr($num) { if (stripos($num, 'e') === false) retu ...

  9. java科学计数法转换成普通计数法

    java科学计数法转换成普通计数法: String sjiachun = "12345E-10"; BigDecimal db = new BigDecimal(sjiachun) ...

随机推荐

  1. PHP-CGI远程任意代码执行漏洞(CVE-2012-1823)修复方案

    首先介绍一下这个漏洞,其实是在apache调用php解释器解释.php文件时,会将url参数传我给php解释器,如果在url后加传命令行开关(例如-s.-d .-c或  -dauto_prepend_ ...

  2. Python制作NTF传递函数工况文件和后处理文件

    摘要:在平时工作中,TB车身的传递函数分析,涉及到大量重复行的工作,费时费力.在学习python基础后,希望通过代码解决这部分重复工作.基础入门级操作,但是能够解决很大一部分工作内容.日后,待pyth ...

  3. jsp内置对象request使用方法2

    <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.util.Date ...

  4. Jmeter_拦截Excel文件输出流到本地

    一般而言,对于页面的“导出”操作,主要经历如下两个操作:①根据数据库的内容,将文件导出到应用服务器上:②将服务器上的文件下载到本地电脑: Jmeter同LoadRunner类似,只能记录服务端与客户端 ...

  5. .gitkeep--git提交空目录的解决方法

    前言 git和 svn不同,仅仅跟踪文件的变动,不跟踪目录.所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的. 只跟踪文件 ...

  6. 判断是pc端登录还是移动端登录

    java判断 https://blog.csdn.net/qq_32657581/article/details/71405838 https://zhidao.baidu.com/question/ ...

  7. 配置文件中取值: spring配置文件中util:properties和context:property-placeholder

    转载大神 https://blog.csdn.net/n447194252/article/details/77498916 util:properties和context:property-plac ...

  8. bzoj 3732: Network 树上两点边权最值

    http://www.lydsy.com/JudgeOnline/problem.php?id=3732 首先想到,要使得最长边最短,应该尽量走最短的边,在MST上. 然后像LCA那样倍增娶个最大值 ...

  9. js 数据类型及检测

    js中基本数据类型有6种number.string.undefined.null.boolean,Symbol (ES6 新增,表示独一无二的值),还有一种数据类型为引用数据类型统称为Object对象 ...

  10. 《从0到1学习Flink》—— Flink 写入数据到 Kafka

    前言 之前文章 <从0到1学习Flink>-- Flink 写入数据到 ElasticSearch 写了如何将 Kafka 中的数据存储到 ElasticSearch 中,里面其实就已经用 ...