【C++】double型数据,只显示其最后3位

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:00:38
试过强行转换,然后用%,但是数据有溢出,不在INT的范围内。。。
求高人。。。
long int ...
我求 6789的1000次方,显示最后3位貌似还是溢出。。。

#include<stdio.h>
void main()
{ double x=123456;
int a;
a=(long)x%1000;
printf("a=%d\n",a);
}
运行结果:
a=456

我只会笨方法

从小数点后面的数字算起

#include <stdio.h>
#include <string.h>

int main(void)
{
int i;
int n = 3;
double d = 2121.2303;
char str[30];

sprintf(str,"%f",d);
for(i = strlen(str) - 1; i >= 2; i--)
{
if(str[i] != '0')
{
for(;i>=0 && n > 0;str[i] != '.' ? n--:n,i--)
printf("%c",str[i]);
break;
}
}

getchar();

return 0;
}

1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4)char型和short型参与运算时,必须先转换成int型。
5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时