基于Bigdecimal科学计数问题
目录
- Bigdecimal科学计数问题
- 主要是数据转换问题
- Bigdecimal与科学计数法(转String)问题
- 测试截图
Bigdecimal科学计数问题
今天做后台报表导出功能数据在小数点八位之后会出现 0E-8类似的问题
主要是数据转换问题
一行代码轻松搞定
new BigDecimal (String.valueOf(value))).toPlainString()
Bigdecimal与科学计数法(转String)问题
BigDecimal是处理高精度的浮点数运算的常用的一个类
当需要将BigDecimal中保存的浮点数值打印出来,特别是在页面上显示的时候,就有可能遇到预想之外的科学技术法表示的问题。
一般直接使用 BigDecimal.toString()方法即可以完成浮点数的打印。但是,toString()方法输出的字符串并不能保证不是科学计数法。
比如直接这么写:
System.out.println( new BigDecimal("0.000000000000").toString());
程序的输出结果为:
0E-12
这是我们不希望出现的结果。
正确的写法:
System.out.println( new BigDecimal("0.000000000000").toPlainString());
程序输出的结果为:
0.000000000000
如果我们希望去除末尾多余的0,那么我们应该这么写:
System.out.println( new BigDecimal("0.000000000000").stripTrailingZeros().toPlainString());
其中,stripTrailingZeros()函数就是用于去除末尾多余的0的
程序输出的结果为:
0
测试截图
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
BigDecimal divide除法除不尽报错的问题及解决
目录 BigDecimal divide除法除不尽报错 解决办法 关于BigDecimal除法问题 BigDecimal做除法时 BigDecimal源码 BigDecimal divide除法除不尽报错 用BigDecimal做除法的时候,直接拿起两数怼上除法有时候会出现除不尽就会报错 列如: BigDecimal a = new BigDecimal(10); BigDecimal re = a.divide(new BigDecimal(3)); System.out.println(re
-
java中BigDecimal用法详解
首先,学习一个东西,我们都必须要带着问题去学,这边我分为 [为什么?][是什么?][怎么用?] [为什么要用BigDecimal?] 首先,我们先看一下,下面这个现象 那为什么会出现这种情况呢? 因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度. 注:根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确.只能无限接近于那个值 但是,在项目中,我们不可能让这种情况出现,特别是金融项目,因为涉及金额的计算都必须十分精确
-
Java中BigDecimal,DateFormatter 和迭代器的"陷阱"
前言: 使用 IDEA 创建一个 Maven 项目 calculate-date-traps 并导入 Junit 依赖. <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> 在进行计费时使
-
Java中BigDecimal的舍入模式解析(RoundingMode)
目录 BigDecimal的舍入模式(RoundingMode) BigDecimal的常规用法 BigDecimal的舍入模式(RoundingMode) BigDecimal.divide方法中必须设置roundingMode,不然会报错. ROUND_UP:向正无穷方向对齐(转换为正无穷方向最接近的所需数值) ROUND_DOWN:向负无穷方向对齐 ROUND_CEILING:向原点的反方向对齐 ROUND_FLOOR:向原点方向对齐 ROUND_HALF_UP:“四舍五入”,如果舍弃部分
-
使用BigDecimal除法后保留两位小数
目录 BigDecimal除法后保留两位小数 详细描述 BigDecimal除法异常Non-terminating decimal expansion 异常分析 解决措施 思考 总结 BigDecimal除法后保留两位小数 BigDecimal numBigDecimal=new BigDecimal(5.33); numBigDecimal=ConvertNumber(numBigDecimal,3,2);//调用,5.33/3后保留两位小数1.7766666=1.78 //BigDecima
-
基于Bigdecimal科学计数问题
目录 Bigdecimal科学计数问题 主要是数据转换问题 Bigdecimal与科学计数法(转String)问题 测试截图 Bigdecimal科学计数问题 今天做后台报表导出功能数据在小数点八位之后会出现 0E-8类似的问题 主要是数据转换问题 一行代码轻松搞定 new BigDecimal (String.valueOf(value))).toPlainString() Bigdecimal与科学计数法(转String)问题 BigDecimal是处理高精度的浮点数运算的常用的一个类 当需
-
基于BigDecimal.setScale的用法小结
1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal(2);//这种写法是可以的 3. BigDecimal num = new BigDecimal("2.225667");//一般都会这样写最好 4. int count = num.scale(); System.out.println(count);//6 返回的是小数点后位数 好了,
-
java开发使用BigDecimal避坑四则
目录 引言 第一:浮点类型的坑 第二:浮点精度的坑 第三:设置精度的坑 第四:三种字符串输出的坑 小结 引言 在使用BigDecimal时,有4种使用场景下的坑,你一定要了解一下,如果使用不当,必定很惨.掌握这些案例,当别人写出有坑的代码,你也能够一眼识别出来,大牛就是这么练成的. 第一:浮点类型的坑 在学习了解BigDecimal的坑之前,先来说一个老生常谈的问题:如果使用Float.Double等浮点类型进行计算时,有可能得到的是一个近似值,而不是精确的值. 比如下面的代码: @Test p
-
python数据化运营的重要意义
python数据化运营 数据化运营的核心是运营,所有数据工作都是围绕运营工作链条展开的,逐步强化数据对于运营工作的驱动作用.数据化运营的价值体现在对运营的辅助.提升和优化上,甚至某些运营工作已经逐步数字化.自动化.智能化. 具体来说,数据化运营的意义如下: 1)提高运营决策效率.在信息瞬息万变的时代,抓住转瞬即逝的机会对企业而言至关重要.决策效率越高意味着可以在更短的时间内做出决策,从而跟上甚至领先竞争对手.数据化运营可使辅助决策更便捷,使数据智能引发主动决策思考,从而提前预判决策时机,并提高决
-
java实现微信红包 拼手气红包
本文实例为大家分享了java实现微信红包的具体代码,供大家参考,具体内容如下 要求 基于BigDecimal类实现微信红包算法的功能,比如设置红包总金额,然后设置需要生成的红包个数,为每个红包随机指定金额,最低不能低于0.01元,要求: 1.每个红包金额随机指定 2.每个红包金额不能低于0.01元 3.要求每个红包的金额之和恰好等于总金额 4.如果平均每个红包的金额不足0.01元时抛出一个RedPacketException,提示每个红包金额不能少于0.01元 实现方法 该题主要考察java常用
-
基于python批量处理dat文件及科学计算方法详解
摘要:主要介绍一些python的文件读取功能,文件内容修改,文件名后缀更改等操作. 批处理文件功能 import os path1 = 'C:\\Users\\awake_ljw\\Documents\\python for data analysis\\test1' path2 = 'C:\\Users\\awake_ljw\\Documents\\python for data analysis\\test2' filelist = os.listdir(path1) for files i
-
基于Python的科学占卜工具开发过程
目录 背景 前置知识 基础原理 如何产生卦象 开发 源代码 背景 一直以来,中式占卜都是基于算命先生手工实现,程序繁琐(往往需要沐浴.计算天时.静心等等流程).准备工作复杂(通常需要铜钱等道具),计算方法复杂,需要纯手工计算二进制并转换为最终的卦象,为了解决这个问题,笔者基于python实现了一套科学算命工具,用于快速进行占卜本文的算命方式采用八卦 + 周易+ 梅花易数实现,脚本基于python3.9.0开发.本人对于周易五行研究较浅,如有疏漏请见谅最终效果如图,在运行程序之后,会根据当前的运势
-
将BigDecimal转成字符串为科学计数法的踩坑记录
目录 BigDecimal转字符串为科学计数法踩坑 场景 解决 案例演示 BigDecimal变科学计数法 BigDecimal转字符串为科学计数法踩坑 场景 在开发工程中,在金额方面都会定义bigdecimal类型,当然有时候也需要将金额转成字符串.我们可能会很自然的写成 金额.toString()方法如: costBudgetEntity.getInitTotalAmount().toString()//获取初始预算金额的字符串 当然当金额过小时,转成字符串,是没有任何问题的,但当金额数值较
-
基于Java将Excel科学计数法解析成数字
需要注意的是一般的科学表达式是 1.8E12 1.8E-12 而在Excel中的科学表达式是 1.8E+12 1.8E-12 我写的科学计数法的正则表达式是 (-?\d+\.?\d*)[Ee]{1}[\+-]?[0-9]* 导入EXCEL数据时将科学计数法解析成数字,Java代码: import java.text.DecimalFormat; import java.util.regex.Pattern; public class Test { static Pattern pattern =
-
JavaScript基于DOM操作实现简单的数学运算功能示例
本文实例讲述了JavaScript基于DOM操作实现简单的数学运算功能.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"
随机推荐
- SQLite教程(四):内置函数
- JavaScript中各数制转换全面总结
- 深入理解angular2启动项目步骤
- Mysql中的触发器简单介绍及使用案例
- Java8新特性之lambda(动力节点Java学院整理)
- struts2中常用constant命令配置方法
- thinkphp连贯操作实例分析
- PHP实现一个多功能购物网站的案例
- 纯Python开发的nosql数据库CodernityDB介绍和使用实例
- C#实现将应用程序设置为开机启动的方法
- javascript之Boolean类型对象
- js实现C#的StringBuilder效果完整实例
- C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
- vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?
- Python字符串匹配算法KMP实例
- 扩展jquery实现客户端表格的分页、排序功能代码
- Android跑马灯MarqueeView源码解析
- 删除XP中“自定义通知”的历史项目
- asp.net中System.Timers.Timer的使用方法
- Java字符流与字节流区别与用法分析