范围内小数个数
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main(){
int n;
double x,y;
cout << "请输入起始数字:";
cin >> x;
cout << "请输入终止数字:";
cin >> y;
cout << "请输入查找位数:";
cin >> n;
cout << "在" << x << "到" << y << "之间有";
x+=pow(10,0-n);
y-=pow(10,0-n);
cout << pow(10,n)*(y-x+1) << "个" << n << "位小数";
return 0;
}
3.3到3.6之间有多少个两位小数?
根据尾-头+1的数量原则,36-33+1就可以直接求出小数的个数。
四舍五入极值
#include <iostream>
using namespace std;
int x,y;
string d,d1;
string maxd(string dd){
string d1=dd;
d1+='4';
for (int i=1;i<=x-y-1;i++)
d1+='9';
return d1;
}
string mind(string ddd){
string d1=ddd;
if (d1[d1.length()-1]!='0'){
d1[d1.length()-1]-=1;
}else{
int p=d1.length()-1;
while(d1[p]=='0' || d1[p]=='.'){
p--;
if (d1[p]=='.')
continue;
if (d1[p+1]!='.')
d1[p+1]='9';
else
d1[p+2]='9';
}d1[p]-=1;
}d1+='5';
for (int i=1;i<=x-y-1;i++)
d1+='0';
return d1;
}
int main(){
cout << "How many decimal places are there in the decimal part of a primary number:";
cin >> x;
cout << "How many digits of the decimal part of the retained decimal:";
cin >> y;
cout << "The decimal number retained is:";
cin >> d;
cout << d << "The maximum value before retention is:" << maxd(d) << endl;
cout << d << "The minimum value before retention is:" << mind(d) << endl;
}
四舍五入法则:
保留位往后一位是0、1、2、3、4直接舍去。
保留位往后一位是5、6、7、8、9舍去,在保留位上加一。
只要在最大值后面狂加4999···(有几位小数加到第几位),在最小值减去该小数的计数单位后狂加5000···(有几位小数加到第几位),就可以求出四舍五入的极值了。