gpt4 book ai didi

Java 为什么将 long (64) 转换为 float (32) 考虑扩大?

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:14 25 4
gpt4 key购买 nike

如 oracle 所述

引用 Oracle Docs

扩大原始转换19 种原始类型的特定转换称为拓宽原始类型转换:

  1. byte 到 short、int、long、float 或 double
  2. short 到 int、long、float 或 double
  3. char 到 int、long、float 或 double
  4. int 到 long、float 或 double
  5. 想要 float 还是加倍
  6. float 到两倍

如果一个 float 有 32 位而一个 long 有 64 位,那如何考虑加宽?这不应该被认为是缩小范围吗?

最佳答案

可由floatdouble 表示的值范围比可由long 表示的范围大得多.虽然从 long 转换为 float 可能会丢失有效数字,但它仍然是一种“扩大”操作,因为范围更广。

来自Java Language Specification, §5.1.2 :

A widening conversion of an int or a long value to float, or of a long value to double, may result in loss of precision - that is, the result may lose some of the least significant bits of the value. In this case, the resulting floating-point value will be a correctly rounded version of the integer value, using IEEE 754 round-to-nearest mode (§4.2.4).

请注意,double 可以准确表示每个可能的 int 值。

关于Java 为什么将 long (64) 转换为 float (32) 考虑扩大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com