`

java 中的数字大小

阅读更多

前提:我们知道IEEE 754标准在尾数(M)全0情况下,如果指数(E)全1,那么这个数表示无穷,如果指数(E)全0 ,那么这个数表示0 。e.g. 那么以float类型(32位)来说,应该是正无穷:0x7F800000表示正无穷

 

问题:(1)我们用如下语句:

 

float num=0x7F800000;
System.out.println(num);

            那么输出是2.13909504E9,为什么?

 

       (2)如果是System.out.println(Float.isInfinite(num))为什么是false?

        

        (3)我们来看Float.POSITIVE_INFINITY的解释

A constant holding the positive infinity of type float. It is equal to the value returned by Float.intBitsToFloat(0x7f800000).

 

 

解答:一切的来源都是因为对float的错误认识,我们知道,int x=0x7F80000可以得到一个十进制整数值,那么num=2139095040和x=2139095040是相等的,因为当我们用十六进制为float类型赋值时,只是赋予了num整数部分,也就是说num会被解析为2139095040(0x7f800000),而不是内存中的十六进制表示,因为java首先会把byte转换为int,

然后再赋予float

 

intBitsFloat这个方法:就是将整数值按照IEEE754转变为Float类型,也就是说,在Float类型值和Int类型值在内存中是相等的。这也就解释了第三个问题

 

那么,如果我们想用十六进制赋予Float类型一个POSITIVE_INFINITY,怎么去做?

答案是死了这条心吧,我们可以从另一个方面去验证答案

float a=0x0.000000p-127f;
System.out.printf("%x\n", a);

 看看报的异常:

 Exception in thread "main" java.util.IllegalFormatConversionException: x != java.lang.Float
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3992)
    at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2708)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2660)
    at java.util.Formatter.format(Formatter.java:2432)
    at java.io.PrintStream.format(PrintStream.java:920)
    at java.io.PrintStream.printf(PrintStream.java:821)
    at com.common.MD5.MD5.main(MD5.java:17)
也就是说,float不支持十六进制表示,我们可以用上述a那样的十六进制去赋予float类型值,但是不能像其在内存值那样去赋予它(那只有整型才能做到)

所以我们只能借助整型去得到POSITIVE_INFINITY,也就是利用方法Float.intBitsToFloat

 

分享到:
评论

相关推荐

    java两个数字比较大小实例下载

    简单的比较两个数字大小的程序运用java基本语句实现 下载Java判断两个数字大小代码实例

    Java判断数字是否在制定范围

    Java判断数字是否在制定范围 A B 中或者与A B 相等

    用Java实现图形界面猜数字大小的游戏

    在本项目中,我们利用Java语言来开发一个具有图形用户界面(GUI)的猜数字大小游戏。这个项目结合了事件监听、模型-视图-控制器(MVC)设计模式等核心概念,使得程序结构清晰,易于维护。接下来,我们将详细讨论实现...

    test2_JavaDouble类型比较大小_java编程_

    在Java编程中,Double类型的数值比较是一个常见的操作,但与我们通常处理整数或浮点数的方式略有不同。本文将详细探讨如何正确地比较Java中的Double类型数值。 首先,了解`Double`类型在Java中的定义至关重要。`...

    Java获取磁盘大小

    在Java编程中,获取磁盘大小是常见的系统信息获取任务,尤其在开发涉及资源管理或者存储监控的应用时显得尤为重要。本篇文章将详细讲解如何利用Java API来获取磁盘的总大小、已用空间以及剩余空间。 首先,我们需要...

    java输入十个数字比较大小运用冒泡

    在给定的代码片段中,使用了冒泡排序算法来对用户输入的十个整型数字进行排序。下面将详细解析这段代码中的知识点,包括冒泡排序的基本原理、Java中的数组使用、用户输入处理以及循环和条件语句的应用。 ### 冒泡...

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    在Java编程中,当涉及到需要精确数值计算的场景时,我们通常会使用`BigDecimal`类。这是因为`float`和`double`类型虽然适用于科学计算和工程计算,但它们基于二进制浮点运算,不能保证完全精确的结果。而`BigDecimal...

    java 水印(水印适应图片大小,但个别图片太小不支持)

    本知识点主要探讨如何在Java中实现自适应图片大小的水印功能,以及遇到图片过小时的处理策略。 首先,我们需要理解水印的基本概念。水印是在图像或文档上添加的一种视觉标记,它可以是文字、图像或者图形,用于表明...

    Java作业比较两个数的大小

    在Java中,可以使用if-else语句或switch语句来比较两个数的大小。例如,以下代码可以比较两个整数的大小: ```java public class CompareTwo { public static void main(String[] args) { int a = 35; int b = 23...

    java比较四个数的大小(二类个)

    本程序旨在通过Java语言实现对四个输入整数进行大小比较的功能,并按照从小到大的顺序输出这些数字。这是一个基础的排序算法示例,适用于初学者理解和实践。 #### 代码结构概述 该程序由两个类组成:`compare` 和 ...

    JAVA数字拼图游戏

    在《JAVA数字拼图游戏》中,开发者运用了Java语言强大的图形用户界面(GUI)库,包括`java.awt`和`java.awt.event`包中的类,来构建一个互动性强且功能丰富的数字拼图游戏。游戏不仅提供了基本的拼图操作,还集成了...

    java图片压缩处理(可以压缩为任意大小

    在上述代码中,`JPEGImageWriteParam`允许我们设置压缩质量,数值越小,压缩后的图片文件越小,但质量也会下降。 除了Java 2D API,还有一些第三方库,如Apache Commons Imaging(以前的Sanselan)和ImageMagick,...

    Java数字时钟

    在Java数字时钟中,可以使用`LocalTime`类获取当前时间,然后将其格式化为合适的字符串,如“HH:mm:ss”或“HH:mm:ss a”,用于在GUI中显示。 5. **资源加载**: 背景图片加载通常涉及`javax.imageio.ImageIO`类,...

    java 摇骰子 比大小

    ### Java 摇骰子比大小程序解析 #### 一、程序概述 本文将详细介绍一个简单的Java程序,该程序能够实现模拟摇骰子并比较大小的功能。程序的主要目的是让用户预测摇出的骰子点数是大还是小,并根据实际摇出的结果与...

    Java小游戏之数字彩虹雨

    5. **随机数生成**:数字的随机生成需要用到java.util.Random类,以确保每个数字的大小和颜色都是随机的。 6. **颜色操作**:Java.awt.Color类提供了创建和操作颜色的方法,游戏中的“彩虹”效果就是通过为每个数字...

    java 实现数字时钟 实例代码

    在`ClockDemo.java`文件中,你会找到上述代码的实现,它构成了一个基本的Java数字时钟程序。运行这个程序,你将在Java Swing窗口中看到一个实时更新的数字时钟。通过扩展这个基础,你可以添加更多的功能,如日期显示...

    java生成1000张图片,分别在每张图片上写阿拉伯数字1~1000

    在Java编程环境中,生成带有阿拉伯数字的图片是一项实用的任务,特别是在网页开发或者自动化测试中,可能需要这样的图像作为标识或顺序指示。以下是如何使用Java来实现这个功能的详细步骤和相关知识点。 首先,我们...

    java猜数字小程序

    在这个"java猜数字小程序"中,我们将探讨如何使用Java Swing库来构建一个简单的猜数字游戏。游戏规则是:计算机随机生成一个数字,玩家有十次机会去猜测这个数字,并在猜的过程中收到提示,提示他们的猜测是偏大还是...

    Java字母加数字组合比较大小

    在Java编程中,比较字母和数字组合的字符串大小是一个常见的需求,特别是在处理用户输入或排序混合类型数据时。本文将详细介绍如何实现此类比较,并提供一个具体的实现示例。 首先,我们要明白,Java中的`String`类...

    随机数大小比较

    本文将详细介绍如何在Java中通过成员方法重载来实现对100以内随机数大小的比较。这种方法不仅能够提高代码的可读性和可维护性,还能使得程序更加灵活,能够应对不同数据类型之间的比较。 #### 成员方法重载的概念 ...

Global site tag (gtag.js) - Google Analytics