首页 > 编程知识 正文

int强制转换double,java 字符串转double

时间:2023-05-03 20:07:16 阅读:18689 作者:4998

onemoo

在C :0x7FFFFFFF * 2.0这一步中,首先将0x7FFFFFFF提升为双精度型,计算结果也为双精度型。 此外,如果转换为int,小数部分将被截断,但整数部分的值将大于int取值的范围。 这样转换会产生什么样的c标准没有规定。 但是,大多数编译器仍然按位保留。 如果是,则结果为0xFFFFFFFE。 另一方面,int是有符号整数,最高有效位(符号位)为1表示其为负数,因此为-2。 从结果来看是这样的。 此外,编译器很可能会优化乘法,将0x7FFFFFFF乘以2将向左移动1位,达到0xFFFFFFFE,因此结果保持为-2。 Java :与算术运算时一样进行类型转换。 首先,0x7FFFFFFF * 2.0的结果也是双精度型。 这个浮点型的整数部分还是超出了int的范围。 这些浮点数将在转换为int时转换为int可以表示的最大值,即0x7FFFFFFF,因此结果为2147483647。 正如您在这里看到的,c和Java处理浮点值到整数类型的转换。 c基本上按位截断,但Java在浮点转换为整数类型时尽量满足原始数值的含义。 (浮点值超过了int范围,所以让int取最大值。 顺便说一下,在Java中,将0x7FFFFFFF * 2.0的结果转换为long,然后进行转换的Java整数间转换规则与c相同,因此如果从低位进行截断,也同样可能引起编码变化的问题。 这样,long就可以保留其浮点型的数值,因此迁移到int后的行为与c相同,结果为-2。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。