double 类型怎样不用科学计数法表示并且使用Java正则表达式去掉Double类型的数据后面多余的0
关于Double变量转字符串(不用科学计数法表示)的方法。
Double类型的变量在区间(负一千万,正一千万)中是正常显示的, 无小数部分时默认带一位小数,如:
9999999—9999999.0
10000000—1.0E7
10000000.1—1.00000001E7
想让Double变量无论是什么数值都不使用科学计数法表示,那么只能将此值转换为字符串形式,当然也不是直接用String.valueOf(Double target)来转换,而是采用以下的方法:
先将Double类型转换成String类型
再将String类型转换成BigDecimal类型
再将BigDecimal类型转换成String
注意!!!
不能直接将Double类型转换成BigDecimal类型,否则会因为精度问题造成数值偏差。
一定要按照Double—String—BigDecimal—String路线走。
下面是示例代码:
//创建Double变量target并完成初始化
Double target = new Double(10000000.1);
//将Double变量target转换成字符串temporary
String temporary = String.valueOf(target);
//将字符串temporary转换成BigDecimal变量bigDecimal
BigDecimal bigDecimal = new BigDecimal(temporary);
//将BigDecimal变量bigDecimal转换成字符串result
String result = String.valueOf(bigDecimal);
最后来一个小题目:如何判断Double类型变量的值中的小数部分超过两位
思路:
先将Double变量转换成String变量(不用科学计数法表示)
将该String变量以小数点进行分割,并将分割后的各部分用数组保存起来
对数组进行相应的判断,即可得到结果。
话不多说,直接上代码。
//创建Double变量target并完成初始化
Double target = new Double(10000000.111);
//将Double变量target转换成字符串temporary
String temporary = String.valueOf(target);
//将字符串temporary转换成BigDecimal变量bigDecimal
BigDecimal bigDecimal = new BigDecimal(temporary);
//将BigDecimal变量bigDecimal转换成字符串result
String result = String.valueOf(bigDecimal);
//将String变量以小数点进行分割,并将分割后的各部分用数组保存起来,注意小数点符号需要转义处理
String[] judgeArray = result.split("\\.");
//对该字符串数组进行判断,若数组含有超过一个元素,并且第二个元素的长度大于2,则表明该Double类型变量的值中的小数部分超过两位
if (judgeArray.length 1 judgeArray[1].length() 2) {
System.out.println("该Double类型变量的值中的小数部分超过两位");
}
关于String.split(String regex)方法,值得注意的是:
在以“|”或者“.”或者“+”或者“*”进行分割时,要对它们进行转义处理,即要使用String.split("\\.")和String.split("\\|")和String.split("\\+")和String.split("\\*")等进行分割,不能使用String.split(".")和String.split("|")和String.split("+")和String.split("*")等进行分割。
//创建Double变量target并完成初始化
Double target = new Double(10000000.1);
//将Double变量target转换成字符串temporary
String temporary = String.valueOf(target);
//将字符串temporary转换成BigDecimal变量bigDecimal
BigDecimal bigDecimal = new BigDecimal(temporary);
//将BigDecimal变量bigDecimal转换成字符串result
String result = String.valueOf(bigDecimal);
/**
* 使用java正则表达式去掉多余的.与0
* @param s
* @return
*/
public static String subZeroAndDot(String s){
if(s.indexOf(".") 0){
s = s.replaceAll("0+$", "");//去掉多余的0
s = s.replaceAll("[.]$", "");//如最后一位是.则去掉
}
return s;
System.out.println(subZeroAndDot("1")); // 转换后为1
System.out.println(subZeroAndDot("10")); // 转换后为10
System.out.println(subZeroAndDot("1.0")); // 转换后为1
System.out.println(subZeroAndDot("1.010")); // 转换后为1.01
System.out.println(subZeroAndDot("1.01")); // 转换后为1.01
整理自:https://www.cnblogs.com/sesexxoo/p/6190517.html
https://bbs.csdn.net/topics/40170929
double 类型怎样不用科学计数法表示并且使用Java正则表达式去掉Double类型的数据后面多余的0 相关文章
安卓入门开发教程!作为移动开发程序员应该怎样去规划自己的学习路线含泪整理面经
前言 今年的寒来得格外慢,眼看年关将近,开年就入春了,但西北季风似乎没有往年的无情。 天气和互联网行业的双重寒冷险些让我翻不过身。 那时的我正处在一个尴尬的境地,工作两年,压力不大,朝九晚五,做着一些在刚入职就一直在做的增删改查。 曾经也找过
mysql使用总结
一、MySQL基础数据类型 1.数值数据类型 MySQL的数值数据类型支持SQL标准的数值类型,其中包括精确数值数据类型(INTEGER, SMALLINT, DECIMAL)和近似数值数据类型(FLOAT, REAL, and DOUBLE) 1.1精确整数数值类型 MySQL支持SQL标准的 INTEGER (or INT) 和SM
七种JS数据类型---Symbol
七种JS数据类型 六种基本类型:string、number、boolean、null、undefined、symbol(ES6新增)一种引用数据类型:boject、array、function// 1、symbol函数前不能使用new关键字,否则会报错,这是因为symbol是原始数据类型,而不是对象,所以不能添加属性。
java基础语法、数据类型、数据类型扩展
java基础语法 java注释有三种 单行注释: // 注释 多行注释: /* 注释 */ 文档注释:javaDoc /** @注释 */ 标识符 关键字 java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符。 标识符注意点 所有的标识符都u应该以字母(A-Z或a-z)、美元符
04-数组
数组 数组的定义 数组就是相同类型的若干个数据组成,有序排列的数据 每一个数据为一个数组元素,可以通过下标来访问它 数组声明创建 声明创建数组: datatype[] ArrayRefvar;//推荐datatype ArrayRefvar[]; new语句创建数组: Datatype[] ArrayRefvar = new D
学习下Redis这个核心数据类型
string 字符串 tring 类型是二进制安全的,即 string 中可以包含任何数据。 Redis 中的普通 string 采用 raw encoding 即原始编码方式,该编码方式会动态扩容,并通过提前预分配冗余空间,来减少内存频繁分配的开销。 在字符串长度小于 1MB 时,按所需长度的
Oracle绑定变量类型为timestamp导致V$SQL_BIND_CAPTURE不显示值
Oracle绑定变量类型为timestamp导致V$SQL_BIND_CAPTURE不显示值 前言 版本:11.2.0.4.0 今天做优化发现一条问题SQL存在绑定变量,其中存在绑定变量类型为timestamp无法通过V$SQL_BIND_CAPTURE或者dba_hist_sqlbind查询到值,显示为空值。 (实际表的这个字段
什么是强类型、弱类型、动态类型、静态类型语言
强类型语言 强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。 强类型语言包括:Java、.net、Python、C++等语言。其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语
mysql创建索引
修改原有字段名称及类型:ALTER TABLE bulletin CHANGE uid username VARCHAR(50) NOT NULL DEFAULT '';添加新字段:alter table bulletin add citycode varchar(6) not null default 0; # 城市代码1.创建数据库时设置编码create database test character se
Redis常用数据类型及其存储结构(源码篇)
一、SDS 1,SDS源码解读 sds (Simple Dynamic String), Simple 的意思是简单, Dynamic 即动态,意味着其具有动态增加空间的能力,扩容不需要使用者关心。 String 是字符串的意思。说白了 就是用C语言自己封装了一个字符串类型 ,这个项目由Redis作者 antir