当前位置: 首页 > 知识库问答 >
问题:

int和double被double java除

丁承德
2023-03-14

我如何解释以下内容:

    double o = 2.3;
    int i = (int) (o * 100000.0);
    double d = i / 100000.0;
    System.out.println(d);

打印2.29999

    double o = 2.3;
    double i = o * 100000.0;
    double d = i / 100000.0;
    System.out.println(d);

打印2.3

 double i = 2.3 * 100000.0;
 double d = i / 100000.0;

共有1个答案

谷良弼
2023-03-14

2.3不能精确地用IEEE-754 64位二进制浮点表示。在第一个代码序列中发生的情况是:

  • 源文本2.3转换为最接近的可表示值2.2999999999999999982236431605997495353221893310546875。
  • 乘以100000的精确数学结果也不能精确表示,因此取整为229999.99999999997089616954326629638671875。
  • 当它转换为int时,转换将截断,生成229999.
  • 再除以100000轮,得到2.29999000000000020094148567295633256435394287109375.
  • 打印上述内容时,Java将其显示为“2.29999”。
 类似资料:
  • 描述 (Description) C库函数double ldexp(double x, int exponent)返回x乘以2表示幂的exponent 。 声明 (Declaration) 以下是ldexp()函数的声明。 double ldexp(double x, int exponent) 参数 (Parameters) x - 这是表示有效数的浮点值。 exponent - 这是expo

  • 描述 (Description) C库函数double frexp(double x, int *exponent)返回值是尾数, exponent指向的整数是指数。 结果值是x = mantissa * 2 ^ exponent 。 声明 (Declaration) 以下是frexp()函数的声明。 double frexp(double x, int *exponent) 参数 (Param

  • 问题内容: 我编写了一个简单的Java程序,如下所示: 由于变量被声明为double,所以我期望这个程序的结果是,但是我得到的输出为 请帮助我理解这一点。 问题答案: 将为0。由于和均为整数。 如果您有,如果答案不是一个完美的整数,则小数点后的数字将被删除。在您的情况下为0.4,因此您将获得0。 你可以施放或到(其他的将被隐式转换)

  • 我很难确定何时使用int、double和long。 我正在计算整数的幂,只要提供的幂不是负数,就返回结果。 对于作业,我需要使用以下代码开始: 以下是我的想法: 我知道我弄乱了int、double或long的使用,但我不知道如何修复它。

  • 问题内容: 我编写的这段代码将转换为获取异常。 这是我的代码 问题答案: 是基元之上的 包装 类。可以将其强制转换为,但不能直接强制转换为。 如果使用代替,它将编译: 您也可以在中间添加演员表,如下所示:

  • 问题是我想从这个:{“cost”:0}解析到双倍。所以我现在所拥有的: null 此外,以下是我从服务器获得的信息: 飞镖让我开心!..是虫子还是怎么的?