标签分类
技术文章
当前位置:主页 > 计算机编程 > python > 转换科学计数法的数值字符串为decimal类型的方法

转换科学计数法的数值字符串为decimal类型的实例讲解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:127

转换科学计数法的数值字符串为decimal类型的方法

这篇文章主要知识点是关于科学计数法,字符串,decimal,转换科学计数法的数值字符串为decimal类型的方法,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python数据科学手册
  • 类型:Python大小:12.4 MB格式:PDF出版:人民邮电出版社作者:杰克·万托布拉斯
立即下载

在操作数据库时,需要将字符串转换成decimal类型。

代码如下:

select cast('0.12' as decimal(18,2));
select convert(decimal(18,2), '0.12');

当需要将科学计数法的数字字符串转换成decimal时,这2种写法都报错:

msg 8114, level 16, state 5, line 1
error converting data type varchar to numeric.
 
select cast('0.12e+006' as decimal(18,2));
select convert(decimal(18,2), '0.12e+006');

网上查了很多资料都没有找到答案。最后无意中发现float类型转换成字符串时就会产生科学计数法的数值字符串:

select cast(cast(1234400000 as float) as varchar)
1.2344e+009

反向思维,那科学计数法的数值字符串应该可以转换成float类型,再转换float到decimal。

以上这篇转换科学计数法的数值字符串为decimal类型的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到spring+springmvc+mybatis整合注、 详解vue axios封装请求状态、 vue项目中使用md5加密以及、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:《Python并行编程参考手册》书评、笔记、下载

下一篇:Python实现随机创建电话号码的实例代码

展开 +

收起 -

学习笔记
网友NO.639895

因BigDecimal类型数据引出的问题详析

前言 我们都知道,java中对大小数,高精度的计算都会用到BigDecimal.但是在实际应用中,运用BigDecimal还是会遇到一些问题,下面话不多说了,来一起看看详细的介绍吧 问题描述: 程序中需要判断一个字段是否为0(字段类型为BigDecimal),想都没想,对象的判断用equals?结果却与预期有一定的差距,看下面代码及运行结果。 public static void main(String[] args) { BigDecimal decimal1 = BigDecimal.valueOf(0); BigDecimal decimal2 = new BigDecimal("0.00"); System.out.println("the result is " +decimal1.equals(decimal2)); } 运行结果: the result is false 结论: BigDecimal类型比较相等不能简单的通过equals方法实现。 BigDecimal类的equals方法源码如下: public boolean equals(Object x) { if (!(x instanceof BigDecimal)) return false; BigDecimal xDec = (BigDecimal) x; if (x == this) return true; if (scale != xDec.scale)//这里会比较数字的精度 return false; long s = this.intCompact; long xs = xDec.intCompact; if (s != INFLATED) { if (xs == INFLATED) xs = compactValFor(xDec.intVal); return xs == s; } else if (xs != INFLATED) return xs == compactValFor(this.intVal); return this.inflate().equals(xDec.inflate()); } 看上面的注释可以知道,BigDecimal类的equals方法会判断数字的精度,看下面的代码及运行结果: public static void main(String[] args) { BigDecimal decimal1 = BigDecimal.valueOf(0).setScale(2); BigDecimal decimal2 = ne……

网友NO.771704

Java中DecimalFormat用法详解

我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Java 提供DecimalFormat类,帮你用最快的速度将数字格式化为你需要的样子。下面是一个例子: importjava.text.DecimalFormat; public class TestNumberFormat{ public static void main(String[]args){ doublepi=3.1415927; //圆周率 //取一位整数 System.out.println(newDecimalFormat("0").format(pi)); //3 //取一位整数和两位小数 System.out.println(newDecimalFormat("0.00").format(pi)); //3.14 //取两位整数和三位小数,整数不足部分以0填补。 System.out.println(new DecimalFormat("00.000").format(pi));// 03.142 //取所有整数部分 System.out.println(newDecimalFormat("#").format(pi)); //3 //以百分比方式计数,并取两位小数 System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16% longc=299792458; //光速 //显示为科学计数法,并取五位小数 System.out.println(newDecimalFormat("#.#####E0").format(c)); //2.99792E8 //显示为两位整数的科学计数法,并取四位小数 System.out.println(newDecimalFormat("00.####E0").format(c)); //29.9792E7 //每三位以逗号进行分隔。 System.out.println(newDecimalFormat(",###").format(c)); //299,792,458 //将格式嵌入文本 System.out.println(newDecimalFormat("光速大小为每秒,###米。").format(c)); } } DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字……

网友NO.583563

MySQL数据类型中DECIMAL的用法实例详解

MySQL数据类型中DECIMAL的用法实例详解 在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法。 一般赋予浮点列的值被四舍五入到这个列所指定的十进制数。如果在一个FLOAT(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2。如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1. 2 3 4 6。 这表示应该定义具有足够位数的浮点列以便得到尽可能精确的值。如果想精确到千分之一,那就不要定义使该类型仅有两位小数。 浮点值的这种处理在MySQL3.23 中有例外,FLOAT(4) 和FLOAT(8) 的性能有所变化。这两种类型现在为单精度( 4 字节)和双精度( 8 字节)的类型,在其值按给出的形式存放(只受硬件的限制)这一点上说,这两种类型是真浮点类型。 DECIMAL 类型不同于FLOAT和DECIMAL,其中DECIMAL 实际是以串存放的。DECIMAL 可能的最大取值范围与DOUBLE 一样,但是其有效的取值范围由M 和D 的值决定。如果改变M 而固定D,则其取值范围将随M 的变大而变大。表2 - 7的前三行说明了这一点。如果固定M 而改变D,则其取值范围将随D 的变大而变小(但精度增加)。表2 - 7的后三行说明了这一点。 给定的DECIMAL 类型的取值范围取决于MySQL数据类型的版本。对于MySQL3.23 以前的版本,DEC……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明