首页 > 试题广场 >

以下会产生精度丢失的类型转换是( )

[单选题]

以下会产生精度丢失的类型转换是( )

  • float  a=10
  • int a=(int)8846.0
  • byte  a=10; int b=-a
  • double d=100
会产生信息丢失不如说丢失精度,这样可能更容易明白,而精度丢失只会发生在从大范围到小范围的转换
上面四个选项,只有 B 是从 double 到 int 也就是从大范围到小范围
编辑于 2017-05-26 14:09:15 回复(10)
对于c选项
只要int类型的数没有超出(byte,short,char)的表述范围也就是127,可以直接byte a=23
发表于 2017-06-29 20:29:58 回复(0)
A: float a=10; 可以. 它可以自動把 int 的10 轉成 float.
float a=10.0; 反而是把 double 轉成 float. 這是損失精度. 在 C/C++可以, 但在 java 是錯誤.
最正確的寫法是 float=10.0f;
B: double变为int损失了精度。
编辑于 2018-05-16 14:30:21 回复(2)
大佬们都解答了错误,那我就罗列一下各类型所占字节数吧,欢迎来改错,蟹蟹欸
byte     1字节 
char     2字节 
short    2字节 
int        4字节 
float     4字节 
long     8字节 
double 8字节 
boolean 没有
编辑于 2017-11-29 19:38:22 回复(12)
小范围转化为大范围的数值型变量,jvm在进行编译的过程中将进行类型的自动提升
大范围到小范围会丢失精度
范围大小依次是:byte、char、short、int、long、float、double
发表于 2017-12-05 19:11:26 回复(1)
精度丢失不仅仅代表值丢失,10.0->10和10.1->10这都叫做精度丢失。精度丢失只会发生在大单位化成小单位的情况,选项中只有B是double转化为int符合大转下情况
发表于 2021-12-10 10:19:30 回复(0)

只有向下转型的时候才可能出现精度丢失的问题。

发表于 2018-07-09 23:44:22 回复(0)
B选项,因为java语言的浮点类型默认是double类型,而不是float,所以是大范围到小范围,就损失了精度。
发表于 2018-07-04 22:41:47 回复(0)
byte a = 10; 难道没有丢失精度??
发表于 2018-01-24 15:58:39 回复(1)
精度丢失,大类型转小类型时发生
发表于 2017-06-10 18:36:11 回复(0)
来人,上图!!!

发表于 2020-10-26 11:21:18 回复(0)
高精度转低精度,精度丢失
发表于 2021-12-20 22:57:31 回复(0)
对于c选项 只要int类型的数没有超出(byte,short,char)的表述范围也就是127,可以直接byte a=23
发表于 2020-07-24 20:47:46 回复(0)
int a=(int)8846.0;
虽然没有超出int的表示范围,但是精度没了……信息丢失了??
发表于 2020-02-11 22:40:24 回复(0)
那c呢,从int到byte怎么也可以呢?求大佬解释
发表于 2018-10-04 14:54:19 回复(0)
byte二进制是比int十进制精度更小的数据类型 byte类型是Java中的一种基本数据类型,它表示8位带符号的二进制数。byte类型的取值范围是[-128, 127]。在计算机中,8位带符号二进制数的最高位表示符号,0表示正数,1表示负数。正数的值就是二进制表示的值,负数的值是取反后加一然后再加个负号得到的值
编辑于 2024-03-18 10:57:04 回复(0)
B 选。因(double8846.0强int,会,只。其
编辑于 2024-03-17 00:13:30 回复(0)
只有大范围转小范围才会精度丢失
编辑于 2024-01-23 11:54:11 回复(0)
a为什么错了,10为int类型,转为float类型,他们大小都是4字节,转换肯定会出现精度丢失呀?
发表于 2023-09-24 14:09:45 回复(1)
类型转化(强制转换),大范围到小范围精度会丢失
编辑于 2023-06-24 18:19:45 回复(0)