【问题标题】:Function not doing math right with double and int [duplicate]函数不能用 double 和 int 正确计算 [重复]
【发布时间】:2019-03-12 11:51:32
【问题描述】:

基本上我有这个循环给我一个公式的答案:

for(int i = 1; i <= 50; i = i + 1) {
    double y = ((-1000/(i + 29)) + (100/3));
    System.out.println(i + " | "+ y);
}

这个循环应该给我 y 的值对于 i (aka. x) 1->50 的值。

这是它的输出:

1 | 0.0
2 | 1.0
3 | 2.0
4 | 3.0
5 | 4.0
6 | 5.0
7 | 6.0
etc until 50

它不应该每次都以 .0 结尾。

当我将 'i' 转换为 double 时:

for(int i = 1; i <= 50; i = i + 1) {
    double y = ((-1000/((double)i + 29)) + (100/3));
    System.out.println(i + " | "+ y);
}

它输出:

1 | -0.3333333333333357
2 | 0.741935483870968
3 | 1.75
4 | 2.6969696969696955
5 | 3.5882352941176485
6 | 4.428571428571427
7 | 5.222222222222221
etc until 50

但是。只需将函数放入图形软件中(我尝试了 wolfram alpha、desmos、symbolab 并手动计算 y)。我得到的结果与我的 Java 循环不同。

这是我的程序应该输出的内容(到 3dp)

1 | 0
2 | 1.083
3 | 2.083
4 | 3.030
5 | 3.922
6 | 4.762
7 | 5.556
etc. i dont want to write these all out

我在这里做错了什么?

我希望收到某人的来信。

谢谢,

-WDK

【问题讨论】:

  • 可能是另一个重复:stackoverflow.com/questions/4685450/…
  • i 转换为double 是不够的,您还需要处理100/333,而不是33.3333333333,因为这两个文字都是整数文字.然后是doublemore here的精度问题。

标签: java math int double


【解决方案1】:

切换到:

    for(int i = 1; i <= 50; i = i + 1) {
        double y = ((-1000./(i + 29)) + ((100.)/3));
        System.out.println(i + " | "+ y);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2022-12-04
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多