Java 浮点数的精确度问题
题目:
分别获取数字的整数部分、小数部分,如15.12,整数部分为15,小数部分为0.12
package my_package;
public class Divide {
public static void main(String[] args) {
double num = 12.345;
//也可以指定调用的方法为static
Divide d = new Divide();
//第一种
String[] arr1 = d.divide_1(num);
System.out.print("整数部分:" + arr1[0] + " ");
System.out.println("小数部分:" + arr1[1]);
//第二种
String[] arr2 = d.divide_2(num);
System.out.print("整数部分:" + arr2[0] + " ");
System.out.println("小数部分:" + arr2[1]);
}
//将整数、小数拆分为数值,再放在一个字符串数组中返回。但由于计算机表示浮点数时有误差,所以小数部分并不精确
public String[] divide_1(double num){
//获取整数部分
int zhengshu=(int)num;
//获取小数部分
double xiaoshu=num-zhengshu;
//放在字符串数组中返回
String[] arr={String.valueOf(zhengshu),String.valueOf(xiaoshu)};
return arr;
}
// 转换为字符串,利用小数点分割,完全精确
public String[] divide_2(double num){
String str=String.valueOf(num);
//小数点位置
int index=str.indexOf(".");
String zhengshu=str.substring(0,index);
String xiaoshu="0."+str.substring(index+1);
return new String[]{zhengshu,xiaoshu};
}
}
Java 浮点数的精确度问题的更多相关文章
- js,java,浮点数运算错误及应对方法
js,java浮点数运算错误及应对方法 一,浮点数为什么会有运算错误 IEEE 754 标准规定了计算机程序设计环境中的二进制和十进制的浮点数自述的交换.算术格式以及方法. 现有存储介质都是2进制.2 ...
- Java浮点数float,bigdecimal和double精确计算的精度误差问题总结
(转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1.float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结 ...
- Java 浮点数精度丢失
Java 浮点数精度丢失 问题引入 昨天帮室友写一个模拟发红包抢红包的程序时,对金额统一使用的 double 来建模,结果发现在实际运行时程序的结果在数值上总是有细微的误差,程序运行的截图: 输入依次 ...
- Java 浮点数精确性探讨(IEEE754 / double / float)与 BigDecimal 解决方案
一.抛砖引玉 一个简单的示例: double a = 0.0; IntStream.range(0,3).foreach(i->a+=0.1); System.out.println(a); / ...
- java浮点数剖析
定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数.计算机系统采纳了所谓的浮点数表达方式.这种表达方式利用科学计数法来表达 ...
- JAVA浮点数计算精度损失底层原理与解决方案
浮点数会有精度损失这个在上大学的时候就已经被告知,但是至今完全没有想明白其中的原由,老师讲的时候也是一笔带过的,自己也没有好好琢磨.终于在工作的时候碰到了,于是google了一番. 问题: 对两个do ...
- java浮点数存储
转自: [解惑]剖析float型的内存存储和精度丢失问题 1.小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1) 十进制整数如何转化为二进制数 算法很简单.举个例子,11表示成二进制数: ...
- 第二章 Java浮点数精确计算
1.实际意义 在实际开发中,如果需要进行float或double的精确计算(尤其是财务计算),直接使用float或double是不行的(具体的例子看下边的代码的main方法的测试结果),需要使用Big ...
- [转] 商业应用中Java浮点数的精确计算及表示
[From] https://blog.csdn.net/stevene/article/details/586089 问题提出 (1).浮点数精确计算 胜利油田三流合一项目中一直存在一个问题,就是每 ...
随机推荐
- 机器学习-MNIST数据集-神经网络
#设置随机种子 seed = 7 numpy.random.seed(seed) #加载数据 (X_train,y_train),(X_test,y_test) = mnist.load_data() ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块AT指令TCP透传方式,定时访问升级(含有数据校验)
实现功能概要 单片机定时使用http访问云端的程序版本,如果版本不一致, 然后通过http下载最新的升级文件,实现远程升级STM32程序. 兼容Air202 ,SIM800 测试准备工作(默认访问我的 ...
- ESA2GJK1DH1K升级篇: 关于升级篇数据校验
前言 鉴于大家都希望升级的时候加入数据校验,所以就满足大家的要求. 其实我也希望自己做的足够的稳定可靠,让大家使用起来放心. 上一节测试了一节加入校验以后的操作方式,这节来详细的说一下校验部分的代码. ...
- Java——判断回文
package basic; import java.util.Scanner; public class Palindrome{ public static boolean isPalindrome ...
- 剑指offer 面试题8:二叉树的下一个节点
题目:给定一棵二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左.右节点的指针,还有一个节点指向父节点的指针. 中序遍历序列是{d,b,h,e,i,a,f,c,g} ...
- Vue实践TS中的一些常见错误解决方案
mixin报错 import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator' import httpminix from ' ...
- springboot事务
参考: 1.https://www.cnblogs.com/kesimin/p/9546225.html https://www.cnblogs.com/east7/p/10585724.html
- 【HDU6216】 A Cubic number and A Cubic Number 和 广工的加强版
题目传送门_杭电版 题目传送门_广工版 广工版的是杭电版的加强版. 题意:判断一个质数是否是两个整数的立方差 ---- 数学题 题解: 根据立方差公式:\(a^3 - b^3 = (a - b)(a^ ...
- React创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值
创建组件的方法,组件的props属性.state属性的用法和特点,父子组件传值,兄弟组件传值 1.react组件 1.1.创建组件的方法 1.1.1.函数组件 定义一个组件最简单的方式是使用JavaS ...
- json for modern c++(nlohmann json)使用小计
前言 一开始使用jsoncpp,但是jsoncpp已经不更新了,nlohmann还在更新,并且jsoncpp做过一次大的版本升级,导致api不兼容,以前使用过的工程代码不能很好的升级到新的版本,并且j ...