/// <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. linux的防火墙端口配置

    健忘啊,记下来吧 Red Hat Linux系统 此类型系统包括red hat的各类衍生及相关不版本,包括RHEL.CentOS.Fedora等等. 防火墙配置文件: /etc/sysconfig/i ...

  2. Google Guetzli是如何压缩图片的?

    你可能已经知道,现在网页文件的平均大小比Doom游戏的安装文件还还大. 文件变大的原因之一是图片的增加,并且还需要支持更高的分辨率. Google来拯救了 Google刚刚发布了一种新的JPEG压缩算 ...

  3. iOS ksyhttpcache音视频缓存

    pod 'ksyhttpcache' 桥接文件 引入 #import <KSYHTTPCache/KSYHTTPProxyService.h> 带appdelegate里初始化 KSYHT ...

  4. jmeter小问题解决方案合集

    问题1.在http请求,post的body中输入中文,显示乱码,怎么解决? 在jmeter的bin目录下,找到这个文件jmeter.properties,把jsyntaxtextarea.font.f ...

  5. Django 02 url路由配置及渲染方式

    Django 02 url路由配置及渲染方式 一.URL #URL #(Uniform Resoure Locator) 统一资源定位符:对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是 ...

  6. Tensorflow安装教程-Win10环境下

    背景:最新版的Tensoflow已经支持Python3.6 首先,下载并安装Anaconda3 内置Python3.6的版本 https://www.continuum.io/downloads 安装 ...

  7. OkHttp工具类

    package test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import ja ...

  8. Oracle权限管理

    一)用户Oracle中的用户分为二大类1)Oracle数据库服务器创建时,由系统自动创建的用户,叫系统用户,如sys.2)利用系统用户创建的用户,叫普通用户,如scott,hr,c##tiger,zh ...

  9. springboot相关的pom依赖文件

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  10. asp.net 在IIS上配置出现的一些问题

    1.可能会遇到一下图的错无.请求的内容似乎是脚本.因而将无法由静态文件处理程序来处理---大概的原因是应用程序池选择错误了.如第二幅图如此解决即可 解决方案如下两个图所示. 我遇到了以上的问题之后能也 ...