C51单片机浮点数运算(想将两个数做一个除法运算,浮点数保留三位,然后数码管输出显示)

因为没有电路bai,所以程序我就du没法给你写,给你个思路.
第一,不知道你zhi的a和b是什么类型dao的,如果是定义成浮点型,那么,可以这样写:
float f_Div = a/b;
如果两个有一个是整形的,那么,把整型强制转换成浮点型:
float f_Div = (float)a/(float)b;
注意,那个f_Div变量必须是float型,才能有小数产生
第二,你要进行显示,肯定要把各个位都取出来,这里面肯定有一个取模运算,就是"%",
对于浮点型,不运行取模运算的,所以,你必须把浮点型转换成整型,但是,不能强制转换,
比如: unsigned int I_Div = (unsigned int)f_Div;这是不可以的,你的小数部分就没有了.
所以,你必须要放大一定的倍数,根据你的要求,你是要保留三位,那么,这里还有个问题,你的
小数点之前有几位,决定了你小数点后面保留几位.
比如,你得到的结果是 1.2345,那么,你就保留1.23
如果你得到的结果是 12.345,那么,就保留12.3
如果你得到的结果是 123.45,你就只能保留123了
如果得到的结果是 0.123,你就只能保留 0.12
所以可以看出,你的浮点型结果整数部分有多少位,决定了你的小数能保留多少位,所以还要进行如下运算:
unsigned int i_Div = unsigned int)f_Div;;
unsigned char Dot_Bit = 0; //---这个变量用来表示在第几位上显示小数点,因为
//---通过下面的操作,已经把小数变成整数了
if(I_Div >= 100) //---表示前面有3个整数部分位
{
; //---那就没什么可操作的,unsigned int i_Div = unsigned int)f_Div;;就符合要求
}
else if (I_DIV >= 10) //---表示整数部分有2位
{
I_DIV = f_Div *10;
Dot_Bit = 1; //---在右数第2个地方显示小数点,也就是十位后显示小数点
}
else
{
I_DIV = f_Div *10;
Dot_Bit = 2; //---在右数第2个地方显示小数点,也就是最前面那位后面显示
}
void Display(void)
{
unsigned char Hundred = I_Div/100;
unsigned char TenBit = (I_Div/%00)/10;
unsigned char TenBit = I_Div%10;
....... //然后就开始显示了
}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题可以通过将浮点数相除得到一个浮点数结果,然后将结果乘以255并强制转换为uint8类型来实现。具体代码如下: float a = 3.14; float b = 2.71; uint8_t result = (uint8_t)(a / b * 255); ### 回答2: 要将浮点数的除法结果赋值给一个uint8类型的数,可以按照以下步骤进行: 1. 首先进行浮点数的除法计算,得到结果的浮点数值。 2. 判断计算结果是否在uint8类型的取值范围内,即0到255之间。若超出范围,则需要进行处理。 3. 若结果在uint8类型范围内,则可以直接将其转换为uint8类型,并赋值给对应的变量。 4. 若结果超出uint8类型的取值范围,则需要进行合适的处理方式。可以选择将结果四舍五入为最接近的整数,然后再进行范围判断和类型转换。 5. 如果无法将结果合理地转换为uint8类型,可以考虑使用其他的数据类型,或者重新评估计算的需求和结果。 总结起来,将浮点数除法运算赋值给一个uint8的数,需要进行合适的数据类型转换和范围判断,在依据实际需求进行处理。 ### 回答3: 将浮点数除法运算赋值给一个uint8的数需要进行几个步骤,确保实现正确的类型转换和数值精度。 首先,进行浮点数除法运算,得到一个浮点数结果。然后将浮点数结果转换为uint8类型。 uint8数据类型的取值范围是0到255,因此需要确保浮点数结果在这个范围内。如果浮点数结果大于255,需要进行截断或舍入操作。 具体实现如下: 1. 假设有浮点数a和b进行除法运算,结果为c。 2. 使用合适的编程语言运算符执行除法计算,得到结果c。 3. 检查c的数值范围是否在uint8类型的取值范围内。如果c小于0或大于255,则需要进行进一步处理。 4. 如果c小于0,将其截断为0,即c = 0。 5. 如果c大于255,将其舍入为最接近的整数。可以使用round函数进行四舍五入操作,例如c = round(c)。 6. 最后,将c的值赋给uint8类型的变量,即uint8_var = c。 需要注意的是,浮点数运算和类型转换可能导致数据损失或溢出。因此,在进行这种类型的运算时,应该谨慎处理,并根据具体应用场景进行适当的数值范围检查和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值