C语言——整数奇数位

1、题目:从低位开始取出长整形变量s中奇数位上的数,一次构成一个新数放在t中。高位仍为高位,低位仍为地位。例如,当s中的数为:7654321时,t为7531.

2、代码

#include<stdio.h>

void fun(long s,long *t)
{
	long s1=10;
	*t=s%10;
	while(s>0)
	{
		s=s/100;
		*t=s%10*s1+*t;
		s1=s1*10;
	}
}

int main()
{
	long s,t;
	printf("\nPlease enter s:");
	scanf("%ld",&s);
	fun(s,&t);
	printf("The result is : %d",t);
}

3、运行结果

### C语言中浮点的精度 在C语言中,不同类型的浮点具有不同的精度和表示范围。对于`float`类型而言,其占用32位空间,在值范围内大约为\(10^{-37}\)至\(10^{38}\),拥有6到7位有效字[^2]。 针对`double`类型,则采用64位来存储据,能够表达从约\(10^{-307}\)到\(10^{308}\)之间的值,并且具备15到16位的有效字。这意味着当处理更高精度需求的据时,应该优先考虑使用`double`而非`float`。 至于`long double`,通常情况下会提供更宽广的表现区间以及更高的准确性——它至少需要128位的空间,可以覆盖\(10^{-4931}\)~\(10^{4932}\)这样的极大极小区间,同时保持有18到19位的有效字。 值得注意的是,浮点的实际精度并不是指小部分的具体长度,而是整个值中的有效位。因此即使是一个非常大的整数或者很小的小,只要它们之间存在足够的差异,就可能超出给定浮点格式所能准确表示的能力之外[^1]。 为了验证两个浮点是否相等,不应该直接比较两者的差值是否等于零,而应当检查该差值是否小于某个预定义的小量(如DBL_EPSILON),这是因为计算机内部对浮点的操作可能会引入微不足道但却不可避免的舍入误差[^3]。 ```c #include <stdio.h> #include <float.h> #include <math.h> int main() { double test = 0.1; if (fabs(test - (1 - 0.9)) < DBL_EPSILON) { printf("正常"); } else { printf("what!!!"); } return 0; } ``` 上述代码片段展示了如何利用标准库宏`DBL_EPSILON`来进行安全可靠的浮点比较操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值