Java 数值类型以及计算】的更多相关文章

前段时候写了一个对外提供的接口,其中有一个数值校验的计算.在测试的过程中发现5.6-1.6 != 4,在反复的测试过程中发现double类型的数值为有精度丢失的现象,看来还是基础知识不牢固,所以就在网上找找文档从头看了一下Java基本数值类型,一回头好多东西已经忘完了,什么二进制补码.原码.反码统统忘记了,回想起大学数学.....(越扯越远了). 基本数据类型和浮点数精度问题引用俩篇现有的博客就不在重复造轮子了,精度问题好像扯得比较多,说实话没看懂,主要写写如何处理精度问题吧. Java的基本数…
Java之间的数值转换如图所示,实心箭头代表无数据丢失,虚线箭头代表可能丢失 例如:123456789是一个大的整数,包含的位数比float类型能够表达的位数多,但这个数转换为float类型时,将会得到同样大小的结果,但却失去了一定的精度. int n = 123456789; float f =n; //f is 1.23456792E8 当转换前后两个数进行二元操作时(例如n+f,n为整数,f为浮点数),则先将两个操作数转换为同一个类型,再进行计算. 转换规则: --如果两个操作数中有一个是…
字符串转数值的规则 当一个字符串被当作一个数值来取值,其结果和类型如下: 如果该字符串没有包含 '.','e' 或 'E' 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 integer 来取值.其它所有情况下都被作为 float 来取值. 该字符串的开始部分决定了它的值.如果该字符串以合法的数值开始,则使用该数值.否则其值为 0(零).合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分.指数部分由 'e' 或 'E' 后面…
问题描述及方案 假设我们在做电商项目,在进行计算时这个丢失精度在产品价格计算就会出现问题,很有可能造成我们手里有9.99元然后后面会有一堆9,但是呢这些钱无法购买一个10元的商品. 在某些编程语言中有专门处理货币的类型,但是Java没有,不过没关系我们可以通过BigDecimal来解决这个问题. 下面我们来看几个例子. testOne 这个呢就是Java本身对于浮点计算的时候会丢失精度,一定要注意,一定要注意,它所引起的事情呢基本没有小事,如果在线上订购量大的话,会引起大的故障, 可能会导致下不…
说明:图中6个实心箭头代表转换无信息丢失,3个虚线箭头表示可能有精度损失的转换.…
一.Java枚举类型的使用 首先请看这段代码: package java上课; public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //从字符串中…
java浮点类型需要采用java.math.*这个工具包,这样的计算结果才是我们想要的.呵呵 import java.math.BigDecimal; import java.text.NumberFormat; /** * 数学计算类 * @author mingge * */ public class ArithUtil { private ArithUtil(){ } /** * 浮点数加法 * @param num1 * @param num2 * @return */ public s…
Java中的初级数值类型 Java是静态类型语言, 所有的变量必须先声明再使用. 其初级类型一共8种: boolean: 数据只包含1bit信息, 但是占空间为8-bit, 默认值为false byte: 8-bit 带符号补码型整数, 取值 -128 ~ 127. 使用于一些对内存空间敏感的大型数组. char: 16-bit单Unicode字符, 最小值也是默认值, 为'\u0000'(或0), 最大值为'\uFFFF'(或65,535). short: 16-bit 带符号补码型整数, 取…
4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND…
Java中的基础类型有:byte.short.int.long.float.double.char和boolean. 它们可被分为四种类型,整型.浮点型.char型和boolean型. 整型:byte.short.int.long 分别占用1.2.4.8个字节的空间: 浮点型:long.float 分别占用4.8个字节: char型:char 占用2个字节: boolean型:boolean 占用1位. 在Java中不能直接使用二进制表示数字,可以使用8进制或者16进制来间接表示.这些数字类型在…