题目描述
试编一程序,输入一个纯小数,把它变成整数后输出。
此整数为这个纯小数乘以若干个10得出的最小的数
输入
一个纯小数。
输出
变成的整数
样例输入
0.125
样例输出
125
我的代码是这样的:
#include <iostream>
#include <string>
#include <cmath>
int main() {
double decimal;
std::cin >> decimal;
std::string decimal_str = std::to_string(decimal);
size_t first_non_zero = decimal_str.find_first_not_of('0', decimal_str.find('.') + 1);
if (first_non_zero == std::string::npos) {
std::cout << "0" << std::endl;
return 0;
}
int result = static_cast<int>(decimal * std::pow(10, decimal_str.length() - first_non_zero - 2));
std::cout << "" << result << std::endl;
return 0;
}
我的输入值为0.125,输出1250而不是125……
输入0.7,输出7000而不是7……
初始思路:
先将小数转换为字符串,然后找到小数点后的第一位非零数字的位置,最后根据这个位置计算需要乘以的10的幂次方。
解析:
1.将小数转换为字符串
2.找到小数点后的第一位非零数字的位置
3.根据位置计算需要乘以的10的幂次方
4.返回结果
附带:
本人编译器版本:Embarcadero Dev-C++ 6.3