打印
[CW32F030系列]

C语言快速精度除法方案

[复制链接]
958|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dspmana|  楼主 | 2024-5-24 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

假设长整形除数a, 长整形被数b,步骤如下:

<1>得到除法的整数部分,c=a/b;

<2>设d为a%b,e=10*d,

得到除法的第一位小数,f=e/b;

(要点:将a余b的余数乘以10倍,再和被除数b相除,就得到小数点后一位小数)

<3>设g为e%b,h=10*g,

得到除法的第二位小数,i=h/b;

以此类推,可以得到除法的任意小数……

/**********************************下面附上C语言程序

**********************************************************/

unsigned long result, result_p;//表示除法结果的整数和小数部分

// result_p是小数部分,例如result_p=12345678,表示0.12345678

Void chufa(unsigned long chushu, unsigned long beichushu, unsigned char wei)

// wei表示精确到小数点后多少位

{ unsigned char i;

unsigned long tmp;

result=result_p=0;

if (beichushu!=0)//被除数必须不为0

{

if (wei==0)

{result=chushu/beichushu;//计算整数部分

result_p=0;

}

else

{result=chushu/beichushu;//计算整数部分

tmp=chushu%beichushu;

for (i=1;i<=wei;i++)//计算小数部分

{tmp=tmp*10;

result_p=result_p*10+tmp/beichushu;

tmp=tmp%beichushu;

}

}

}


使用特权

评论回复
沙发
可怜的小弗朗士| | 2024-6-12 14:11 | 只看该作者
很不错的方法

使用特权

评论回复
板凳
daichaodai| | 2024-6-12 19:46 | 只看该作者
先对数据进行倍数放大之后,再做除法运算。

使用特权

评论回复
地板
AdaMaYun| | 2024-6-13 19:47 | 只看该作者
这种计算方法有弊端嘛?

使用特权

评论回复
5
jf101| | 2024-6-27 22:08 | 只看该作者
精度怎样?

使用特权

评论回复
6
szt1993| | 2024-6-28 11:28 | 只看该作者
C语言快速精度除法方法很简单

使用特权

评论回复
7
Carmen7| | 2024-7-10 12:30 | 只看该作者
逻辑很棒啊,我觉得,这种放大之后再运算很稳

使用特权

评论回复
8
Alina艾| | 2024-7-10 12:30 | 只看该作者
挺好的,这个学习了,以前都是直接做除法

使用特权

评论回复
9
Charlotte夏| | 2024-7-10 12:31 | 只看该作者
话说,如果芯片支持乘除法运算的话,就不用这么麻烦了吧

使用特权

评论回复
10
Emily999| | 2024-7-10 15:56 | 只看该作者
还可以精确到小数点几位是么,真不粗

使用特权

评论回复
11
Betty1299| | 2024-7-10 17:08 | 只看该作者
这么做确实可以,而且还比较精确

使用特权

评论回复
12
Estelle1999| | 2024-7-10 18:14 | 只看该作者
一些C语言库提供了高精度计算的功能,例如GNU Multiple Precision Arithmetic Library(GMP)。GMP库提供了高效的算法来处理大整数和高精度浮点数的运算,包括除法

使用特权

评论回复
13
Betty996| | 2024-7-10 19:29 | 只看该作者
牛顿-拉弗森方法是一种迭代方法,用于逼近函数的根。在除法中,可以通过这种方法来逼近除数的倒数,然后通过乘法得到商。这种方法在硬件实现中尤其有效,因为它可以利用乘法器来加速计算

使用特权

评论回复
14
alxd| | 2024-7-11 08:27 | 只看该作者
长除法是一种基本的除法算法,适用于任意精度。它通过逐步减去除数来计算商,适用于整数和小数的高精度除法

使用特权

评论回复
15
B1lanche| | 2024-7-11 10:00 | 只看该作者
对于二进制数的除法,可以使用移位和减法的组合来实现快速除法。这种方法在硬件实现中很常见,因为它可以利用处理器的移位和减法指令

使用特权

评论回复
16
Carina卡| | 2024-7-11 12:30 | 只看该作者
对于一些特定的除数,可以预先计算并存储它们的倒数,然后在运行时通过查找表来快速获取结果。这种方法适用于除数固定或变化不频繁的场景

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

2583

帖子

2

粉丝