首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无论输入是什么,操作的输出都是零

无论输入是什么,操作的输出都是零
EN

Stack Overflow用户
提问于 2014-09-26 19:07:02
回答 4查看 120关注 0票数 0

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

代码语言:javascript
复制
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);

    }
}

输出示例:

代码语言:javascript
复制
s is equal to0.0
high is equal to139
low is equal to30
high and low are equals139==30
EN

回答 4

Stack Overflow用户

发布于 2014-09-26 19:16:17

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

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

代码语言:javascript
复制
s = (high-low)/(double)high;
票数 4
EN

Stack Overflow用户

发布于 2014-09-26 19:13:07

仅仅将变量定义为整数类型并不意味着操作本身将是双精度的,高和低是139和30,这是整数,而Integer/Integer是一个双精度整数,然后将其扩展为双精度(即,.0.0)

只需将高或低转换为双精度,您将获得双精度的结果

代码语言:javascript
复制
 s=   (high-low)/(double)high;
票数 2
EN

Stack Overflow用户

发布于 2014-09-26 19:15:20

由于high和low是整型,因此

代码语言:javascript
复制
(high-low)/high

是作为int值计算的。

尝试:

代码语言:javascript
复制
1.0*(high-low)/high
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26058140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档