浮点数切分 C++

题目内容:

编写程序,从键盘输入一个不等于0的浮点数,然后分别输出这个浮点数的符号、整数部分和小数部分。例如输入-123.456,输出应该是(按下列格式输出,需要完全一致!!!):

输入格式:

浮点数

输出格式:

sign:-或+

integral part:

decimal fraction part:保留3位小数

输入样例:

-123.456

输出样例:

sign:-

integral part:123

decimal fraction part:0.456

代码如下:

//编写程序,从键盘输入一个不等于0的浮点数,然后分别输出这个浮点数的符号、整数部分和小数部分。
//例如输入-123.456,输出应该是(按下列格式输出,需要完全一致!!!):
//用if语句来实现该编程
#include<stdio.h>
int main()
{
	double x;
	scanf("%lf",&x);
	if(x>=0)
	printf("sign:+\n");
	else
	printf("sign:-\n");//这里判断正负号,并且输出符号
	
	int y=(int)x;//这儿强制转化数据类型
	if(x<0)y=-y;
	printf("integral part:%d\n",y);//这里输出整数部分
	
	if(x<0)x=-x;
	double z=x-y;
	if(z<0)z=-z;
	printf("decimal fraction part:%.3lf\n",z);//这里输出小数部分,“%.3lf”是输出3位小数
	//若需要更高位数,可以把“3”改为其他数字,也可以改为“%lg”
	return 0;
	
}

运行结果:

123.456
sign:+
integral part:123
decimal fraction part:0.456

--------------------------------
Process exited after 4.281 seconds with return value 0
请按任意键继续. . .

坚持不懈,必有收获

加油💪

高精度浮点数加法在C++中通常涉及到库函数的使用,因为标准库提供的`std::float`类型可能无法满足非常精确的大数值计算需求。对于这种需要,程序员可能会选择第三方库如`GMP` (GNU Multiple Precision Arithmetic Library) 或 `MPFR` (Multiple Precision Floating-Point Reliable),它们提供了高精度的算术运算功能。 在C++中,如果你想要进行高精度浮点数加法,首先需要包含相应的头文件,比如`gmpxx.h`(如果使用GMP),然后创建`mpz_t`类型的变量来存储大数,或者`mpfr_t`类型的变量来存储高精度浮点数。接下来的示例展示了如何使用GMP库进行加法: ```cpp #include <gmpxx.h> int main() { mpz_class a(999999); // 使用mpz_class表示大数 mpz_class b(987654); mpz_class sum; // 进行加法操作 mpz_add(&sum, &a, &b); std::cout << "Sum of two large integers: " << sum.get_str() << std::endl; // 输出结果 return 0; } ``` 如果你需要高精度浮点数,可以使用`mpfr_t`并配合`mpfr_add()`函数: ```cpp #include <mpfr.h> // ... mpfr_t pa, pb, result; mpfr_init2(pa, your_precission); // 初始化精度 mpfr_init2(pb, your_precission); mpfr_init2(result, your_precission); // 加法操作 mpfr_set_str(pa, "999999", MPFR_RNDN); // 设置浮点数 mpfr_set_str(pb, "987654", MPFR_RNDN); mpfr_add(result, pa, pb); // 打印结果 mpfr_out_str(std::cout, 10, result); // 10代表十进制输出 mpfr_clear(&pa); mpfr_clear(&pb); mpfr_clear(&result); return 0; ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值