java正则表达式 数字 科学计数,double 类型怎样不用科学计数法表示并且使用Java正则表达式去掉Double类型的数据后面多余的0...

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值