java程序编写中使用浮点数和小数的技巧与陷阱
程序编写中使用浮点数和小数的技巧与陷阱
虽然几乎每种处理器和编程语言都支持浮点运算,但大多数程序员很少注意它。这容易理解 ― 我们中大多数很少需要使用非整数类型。除了科学计算和偶尔的计时测试或基准测试程序,其它情况下几乎都用不着它。同样,大多数开发人员也容易忽略 java.math.BigDecimal 所提供的任意精度的小数 ― 大多数应用程序不使用它们。然而,在以整数为主的程序中有时确实会出人意料地需要表示非整型数据。例如,JDBC 使用 BigDecimal 作为 SQL DECIMAL 列的首选互换格式。
IEEE 浮点
Java 语言支持两种基本的浮点类型: float 和 double ,以及与它们对应的包装类 Float 和 Double 。它们都依据 IEEE 754 标准,该标准为 32 位浮点和 64 位双精度浮点二进制小数定义了二进制标准。
IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。IEEE 浮点数用 1 位表示数字的符号,用 8 位来表示指数,用 23 位来表示尾数,即小数部分。作为有符号整数的指数可以有正负之分。小数部分用二进制(底数 2)小数来表示,这意味着最高位对应着值 ?(2 -1),第二位对应着 ?(2 -2),依此类推。对于双精度浮点数,用 11 位表示指数,52 位表示尾数。
因为用科学记数法可以有多种方式来表示给定数字,所以要规范化浮点数,以便用底数为 2 并且小数点左边为 1 的小数来表示,按照需要调节指数就可以得到所需的数字。所以,例如,数 1.25 可以表示为尾数为 1.01,指数为 0: (-1) 0*1.01 2*2 0
数 10.0 可以表示为尾数为 1.01,指数为 3: (-1) 0*1.01 2*2 3
特殊数字
除了编码所允许的值的标准范围(对于 float ,从 1.4e-45 到 3.4028235e+38),还有一些表示无穷大、负无穷大、 -0 和 NaN(它代表“不是一个数字”)的特殊值。这些值的存在是为了在出现错误条件(譬如算术溢出,给负数开平方根,除以 0 等)下,可以用浮点值集合中的数字来表示所产生的结果。
这些特殊的数字有一些不寻常的特征。例如, 0 和 -0 是不同值,但在比较它们是否相等时,被认为是相等的。用一个非零数去除以无穷大的数,结果等于 0 。特殊数字 NaN 是无序的;使用 == 、 < 和 > 运算符将 NaN 与其它浮点值比较时,结果为 false 。如果 f 为 NaN,则即使 (f == f) 也会得到 false 。如果想将浮点值与 NaN 进行比较,则使用 Float.isNaN() 方法。表 1 显示了无穷大和 NaN 的一些属性。
java 程序编写中使用浮点数和小数的技巧与陷阱_计算机软件及应用_IT/计算机_专业资料。www.027hpedu.com java 程序编写丨使用浮点数和小数的技巧不陷阱虽然几乎每...
Math 类中的 round 方法不能设置保留几位小数, 我们只能象这样 (保 留两位)... java 程序编写中使用浮点... 暂无评价 10页 免费喜欢此文档的还喜欢...
小数点位于中间,那么你可以表示 10.28,也可 以表示 00.01,与这种方法性质...既然说到了浮点型是使用二进制表示的 1)简单介绍下 IEEE754 标准 ) Java 中...
{ 11: //主方法,作为 Java 应用程序的默认入口。...("请输入一个浮点数: "); 11: BufferedReader br...('.'); //找到小数点的位置 14: d = Double....
371 找到第4个水仙花数:407 10、编写程序,打印输出一个浮点数组中的最大值和...(); //如果读入小数将报错 System.out.println(i); } } 方法2,使用...
浅谈java的浮点数精度问题及如何解决精度缺失问题_...IEEE 754 用科学记数法以底数为 2 的小数来表示浮... 野钓鲫鱼的技巧 19页 免费 西方19世纪前室内设计...
运行环境,是面向 Java 程序的使用者,而不是开发者...试写出方法定义的一般格式并加以说明。 格式:修饰符...接受用户输入的一个浮点数,把它的整数部分和小数...
必须知道这块内存空间的位置,为了 方便使用,程序设计语言用变量名来代表该数据...2.浮点型 Java 语言用浮点型表示数学中的实数,也就是说既有整数部分又有小数...
2.JApplet 中使用内容面板作为其惟一直接后代 59:3、下列选项中属于 Java 语言...3.浮点型数据小数位数越少越精确 27:32、下列哪个不是面向对象程序设计方法的...
Java应用程序在类中必须定义一个main()方法作为入口...(原始数据类型)整数类型 浮点数(实数)类型 字符(...浮点数类型也称实型,浮点数是带小数点或指数的数值...
热门文档