微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将两个整数相除并得到十进制数的结果?

如何解决如何将两个整数相除并得到十进制数的结果?

我正在 Contiki 中为 Zolertia 模块做一个项目,我需要在其中计算发生野火的风险。

为了计算这个风险,使用的公式是Risk = Temperature / Humidity
Risk 的结果是一个十进制值,有 5 个不同的值范围可以对这个 Risk 进行分类0-0.49,0.5-0.99,1-1.49,1.5-1.99,>=2

我的问题是我无法获得十进制结果。当我在终端中运行它时,它会显示温度值和湿度值,但风险值中只有一个空格。

我的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "contiki.h"
#include <float.h>

PROCESS(temp_hum_fog,"Wildfire Control");
AUTOSTART_PROCESSES(&temp_hum_fog);

static struct etimer et;

PROCESS_THREAD(temp_hum_fog,ev,data)
{
    
    int16_t temp,hum;
    float risk;

    PROCESS_BEGIN()


    while(1) {
        etimer_set(&et,CLOCK_SECOND);
        PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

        temp = rand() % 45;
        hum = rand() % (85-5)+5;
        risk = (float)temp/(float)hum;

        printf("Temperature:%d ºC\nHumidity:%d HR\nRisk:%f\n",temp,hum,risk);

    }

    PROCESS_END();


}

如果我将 temphum 的类型更改为 float,它也不会显示任何结果,因此我不确定 float 在 Contiki 中是否有效。

有人知道任何解决方案吗?

解决方法

您使用的 C 实现不是完整的标准 C 实现,并且不支持 printf 中的浮点转换。三个选项是:

  • 查看 C 实现的文档,看看是否可以启用对浮点的支持。
  • 找到另一个要使用的 C 实现(尤其是标准 C 库)。
  • 使用整数算术(如下例所示)进行计算。

此代码会将商打印到小数点后两位,四舍五入,仅使用整数运算:

    int integer  = temp/hum;
    int fraction = temp%hum * 100 / hum;
    printf("Risk: %d.%02d\n",integer,fraction);

注意这里假设所涉及的值为正;负数可能会导致不希望的输出。

,

我有几点建议:

  1. 使用尾随 'f' 或在其中添加小数位指定文字

<full-calendar @click.prevent="" :options="calendarOptions" ref="calendar" @mouseover="getCalendarTimestamp" ></full-calendar> getCalendarTimestamp(e) { if (e.srcElement.attributes[1] && e.srcElement.attributes[1] != undefined ) { console.log(e.srcElement.attributes[1].value); } else { console.log("not a date value"); } }

  1. 将 temp 和 hum 声明为浮点数,然后转换 rand() 的结果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。