/// <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. puppet批量管理500多台服务器

    前言 puppet使用了有一段时间了,之前写的手顺书一直未发布到blog上来,今天正好有空,写下一点笔记.公司在用的服务器有500多台,基本都为CentOS,版本有5和6两种,管理起来很不方便,尤其是 ...

  2. Python Day22

    Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类 ...

  3. EOS 用户权限相关命令

    首先,环境相关的配置请参考https://www.cnblogs.com/hbright/p/9266420.html 在这里,我们一起看年EOS权限相关的东东.我们先查看hml这个用户的相关信息 h ...

  4. php类内方法使用类外变量和类外函数

    如果要调用另一个类的属性和方法,直接实例化后调用就可以 但是要使用的变量和函数是独立的,不在本类或其他类里面,这时调用就要用下面的方法(本例是在同一个php文件里,如果不再同一个类文件可以requir ...

  5. python 3.7 生成数据库文档

    开发阶段数据库总是有变动,开发人员需要维护文档给相关人员使用,故编写一个脚本自动生成数据库文档 生成的excel如下 import cx_Oracle import os from openpyxl ...

  6. java程序生成二维码

    在物联网的时代,二维码是个很重要的东西了,现在无论什么东西都要搞个二维码标志,唯恐落伍,就差人没有用二维码识别了.也许有一天生分证或者户口本都会用二维码识别了.今天心血来潮,看见别人都为自己的博客添加 ...

  7. javascript数组常用的遍历方法

    本篇文章给大家带来的内容是关于javascript数组常用的遍历方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 本文主要介绍数组常见遍历方法:forEach.m ...

  8. Batch the files in the directory

    #!/bin/bash #sourceFolder = /home/bigdatagfts/pl62716/refdata #targetFolder = /home/bigdatagfts/pl62 ...

  9. 源码分析Thread

    多次start ?? IlleageStateException

  10. C#基础之类型和成员基础以及常量、字段、属性

    首先吐糟一下今天杭州的天气,真是太热了!虽然没有妹子跟我约会,但宅在方寸大的窝里,也是烦躁不已! 接上一篇<C#基础之基本类型> 类型和成员基础 在C#中,一个类型内部可以定义多种成员:常 ...