经常需要将一种数值类型转换为另一种数值类型。下图 给出了数值类型之间的合法 转换。

在图中有 6 个实心箭头,表示无信息丢失的转换;有 3 个虚箭头, 表示可能有精度 损失的转换。 例如,123 456 789 是一个大整数, 它所包含的位数比 float 类型所能够表达的 位数多。 当将这个整型数值转换为 float 类型时,将会得到同样大小的结果,但却失去了一定 的精度。 int n = 123456789; float f= n;//f is 1.23456792E8 当使用上面两个数值进行二元操作时(例如 n + f,n 是整数,f 是浮点数), 先要将两个操作数转换为同一种类型,然后再进行计算。

•如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。

•否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。

•否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。

•否则, 两个操作数都将被转换为 int 类型。

  在必要的时候, int类型的值将会自动地转换为 double 类型。但另 一方面,有时也需要将 double转换成 int。 在 Java中, 允许进行这种数值之间的类型转换。 当然, 有可能会丢失一些信息。在这种情况下,需要通过强制类型转换(cast) 实现这个操 作。强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变 量名。例如: double x * 9.997; int nx = (int) x; 这样, 变量 nx 的值为 9。强制类型转换通过截断小数部分将浮点值转换为整型。 如果想对浮点数进行舍人运算, 以便得到最接近的整数(在很多情况下, 这种操作更有 用),那就需要使用 Math_round 方法: double x z 9.997; int nx = (int) Math.round(x); 现在, 变量 nx 的值为 10。 当调用 round 的时候, 仍然需要使用强制类型转换(int)。其原因 是 round 方法返回的结果为 long 类型,由于存在信息丢失的可能性,所以只有使用显式的强 制类型转换才能够将 long 类型转换成 int 类型。

警告: 如果试图将一个数值从一种类型强制转换为另一种类型, 而又超出了目标类型的 表示范围,结果就会截断成一个完全不同的值。例如,(byte) 300 的实际值为 44。

  

Java基础之数值类型之间的转换的更多相关文章

  1. java数值类型之间的转换

    说明:图中6个实心箭头代表转换无信息丢失,3个虚线箭头表示可能有精度损失的转换.

  2. Java基础:数值类型转换、强制类型转换

    数值类型之间的转换 数值类型之间的转换,在小数值往大数值转换时,不会发生精度的损失.在小数值往大数值转换时有可能发生精度的损失. 比如byte最大值也只有127,如果一个大于127的int类型数据往b ...

  3. Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换(Wrapper类)

    基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱 ...

  4. 【opencv基础】opencv和dlib库中rectangle类型之间的转换

    前言 最近使用dlib库的同时也会用到opencv,特别是由于对dlib库的画图函数不熟悉,都想着转换到opencv进行show.本文介绍一下两种开源库中rectangle类型之间的转换. 类型说明 ...

  5. Java 集合 集合与数组之间的转换

    Java 集合 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 ...

  6. Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  7. Java学习--Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  8. Java开发学习--Java 中基本类型和包装类之间的转换

    Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之 ...

  9. pytorch--基础类型之间的转换

    在pytorch自己定义张量并进行计算的时候,往往会因为类型不匹配而报错,这里稍微记下pytorch之间的类型转换: 对tensor基础类型进行转换:比如说int().float().long().d ...

  10. java基础04-数据类型扩展及面试题

    java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...

随机推荐

  1. zabbix数据库

    1. 安装MySQL 5.6 操作系统为CentOS7 X64 MySQL文件下载地址 http://dev.mysql.com/downloads/repo/yum/ 卸载已存在文件 rpm -qa ...

  2. python基础-列表list [ ]

    列表的定义和操作 列表的特性: 元素数量 支持多个 元素类型 任意 下标索引 支持 重复元素 支持 可修改性 支持 数据有序 是 使用场景 可修改.可重复的 一批数据记录场景 # 定义一个列表list ...

  3. 《DNK210使用指南 -CanMV版 V1.0》第二章 Kendryte K210简介

    第二章 Kendryte K210简介 1)实验平台:正点原子DNK210开发板 2)章节摘自[正点原子]DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail. ...

  4. 理解Node.js 的重要概念

    Node.js是什么 Node.js是JavaScript的运行时(runtime),终于脱离了浏览器也能运行JavasScript了.同时,Node.js又暴露fs,http等对象给JS,使JS能够 ...

  5. 开源一个常用的树目录和下拉树js组件

    我写的一个常用的树目录组件,需要jquery和font-awesome支持,对于想使用自定义图标的可以重定义 fa样式即可,或者直接更换源码的样式名称. 下载地址:https://github.com ...

  6. Mybatis 一级缓存

    Mybatis一级缓存介绍 什么是缓存 程序经常要调用的对象存在内容中,方法其使用时可以快速调用,不必去数据库或者其他持久化设备中查询,主要就是提高性能 Mybatis一级缓存 简介:一级缓存的作用域 ...

  7. CF2B

    非常恶心的dp题,测试数据也恶心,坑多,特别是0的坑 #include <iostream> #include <utility> #include <string> ...

  8. 内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】

    frp简介 frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公网. 为什 ...

  9. 引入样式在Element UI (Vue 2)和Element Plus (Vue 3)中的不同

    引入样式 Element UI (Vue 2):   import 'element-ui/lib/theme-chalk/index.css'; Element Plus (Vue 3):   im ...

  10. SQL Server 图解备份(完全备份、差异备份、增量备份)和还原

    常用的数据备份方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢? 1.三种备份方式 完全备份(Full Backup):备份全部选中的文件夹,并不依赖文件 ...