1.思路
小数=整数部分+小数部分
而这两个部分可以用快读int的方法来完成(第二个要改亿改)
如果没有小数点 就直接返回整数部分
如果有小数点 组合到一起并返回就行了
要注意 负小数=整数部分-小数部分
所以要再加一个判断是否是负数
2.代码
double readD()
{
int zh = 0;//整数部分
int w = 1;//符号
bool flag = false;//有没有小数点
double xi = 0.0;//小数部分
double x = 1.0;//该除以几了 即插到哪一位
char ch = getchar();//开 始 生 草 快 读
while (ch < '0' || ch > '9')//茫茫字海找负号
{
if (ch == '-') w = -1;//找到就把它设置
ch = getchar();//否则跳过下一个
}
while (ch >= '0' && ch <= '9')//整数部分已开始
{
zh = zh * 10 + ch - '0';//前挪一位加数字
ch = getchar();//加完之后下一个
}
while (ch < '0' || ch > '9')//开始寻找小数点
{
if (ch == '.') flag = true;//如果有就设置好
ch = getchar();
}
if (!flag) return zh;//如果没有返整数
while (ch >= '0' && ch <= '9')//开始了小数部分
{
x *= 10;//后移一位好添加
xi = xi + (ch - '0') / x;//往后加一个数位
ch = getchar();//加完之后下一个
}
if (w == 1) return zh + xi;//如果是正把加返
else return zh - xi;//如果是负把减还
}//生 草 快 读 结 束
3.结语
大家理解即可qwq
既然都看到这了,不三连一个在走吗