java - 无论输入是什么,操作的输出始终为零

标签 java

我有这段代码,变量 s 的输出始终为零:

double v = high; double s; double h;
if (v == 0) {
    s = 0;
    h = 0;
    System.out.println("v and s and h is zeroo" + v + s + h);
} else {
    s = (high - low) / high;
    System.out.println("s is equal to" + s);
    System.out.println("high is equal to" + high);
    System.out.println("low is equal to" + low);
    if (s == 0) {
        h = 0;
        System.out.println("high and low are equals" + high + "==" + low);
    } else {
        double alpha;
        alpha = 60 * (mid - low) / (high - low);
        System.out.println("alpha is : " + alpha);

    }
}

输出示例:

s is equal to0.0
high is equal to139
low is equal to30
high and low are equals139==30

最佳答案

由于 highlow 都是 int 类型,因此 s = (high-low)/行中的除法high 使用整数除法,并且由于 high - low 始终小于 high(除非 low 是负数),因此结果始终为零。

要解决此问题,请将其中一个转换为 double:

s = (high-low)/(double)high;

关于java - 无论输入是什么,操作的输出始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058140/

相关文章:

java - 从 JDeveloper 11.1.2.4 迁移我的应用程序后,JDeveloper 12c 出现导航错误

java - 按顺序计算字符出现的次数

java - Hibernate.initialize() 似乎不适用于延迟加载的集合

java - KeyGenerator 线程安全吗?

java - 创建自定义 Hibernate UserType - isMutable() 是什么意思?

java - 如何在java中将一个不带空格的字符串分割成多个单词?

java - PrintWriter 创建空文件

java - Log4j:特定日志记录

java - 如何找到文件中的最大字节?

java - 如何正确实现涉及两个表之间 JOIN 的 Spring Data JPA 命名查询?