- gf23129 的博客
c++ 拆分数字的整数与小数部分的方法
- 2025-4-30 22:03:38 @
#include <bits/stdc++.h>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <utility>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct NumberDigits
{
vector<int> sint;
vector<int> sfloat;
};
NumberDigits splitNumberDigits (const string & numberStr)
{
size_t dotPosition=numberStr.find('.');
string integerPartStr=numberStr.substr(0,dotPosition);
string decimalPartStr=(dotPosition!=string::npos) ? numberStr.substr(dotPosition+1) : "";
NumberDigits result;
for(char digit : integerPartStr)
{
result.sint.push_back(digit-'0');
}
for(char digit : decimalPartStr)
{
result.sfloat.push_back(digit-'0');
}
return result;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string inputNumber;
cin>>inputNumber;
NumberDigits digits=splitNumberDigits(inputNumber);
cout<<"整数部分:";
for(size_t i=0;i<digits.sint.size();++i)
{
cout<<digits.sint[i];
if(i!=digits.sint.size()-1)
{
cout<<" ";
}
}
cout<<"\n";
cout<<"小数部分:";
for(size_t i=0;i<digits.sfloat.size();++i)
{
cout<<digits.sfloat[i];
if(i!=digits.sfloat.size()-1)
{
cout<<" ";
}
}
cout<<"\n";
return 0;
}
代码功能简述:
该代码接收一个数字字符串(如 "123.456"),将其拆分为整数部分和小数部分,并逐位输出。
例如:
输入 "123.456",输出:
整数部分:1 2 3
小数部分:4 5 6
若无小数点(如 "789"),则仅输出整数部分,小数部分为空。
结构体 NumberDigits
中文含义:用于存储数字的各位数字
成员变量:
sint (signed int 的缩写):存储整数部分的各位数字(如 123.456 的 1,2,3)
sfloat (signed float 的缩写):存储小数部分的各位数字(如 123.456 的 4,5,6)
2. 函数 splitNumberDigits
中文含义:拆分数字字符串为整数和小数部分
参数:
numberStr:输入的数字字符串(如 "123.456")
返回值:
返回 NumberDigits 结构体,包含拆分后的整数和小数各位数字
3. main 函数中的变量
inputNumber:存储用户输入的数字字符串(如 "123.456")
digits:接收 splitNumberDigits 返回的结果,包含:
digits.sint:整数部分的各位数字
digits.sfloat:小数部分的各位数字
4. 局部变量(在 splitNumberDigits 函数内)
dotPosition:记录小数点位置的索引值
integerPartStr:截取出的整数部分字符串(如 "123")
decimalPartStr:截取出的小数部分字符串(如 "456")
result:临时存储拆分结果的 NumberDigits 对象
代码执行流程
用户输入一个数字字符串(如 "123.456")
splitNumberDigits 函数:
找到小数点位置
分离整数和小数字符串
将每个字符转换为数字存入 NumberDigits
主函数输出:
整数部分数字(digits.sint)
小数部分数字(digits.sfloat)
示例
输入 "123.456" 时:
digits.sint → {1, 2, 3}
digits.sfloat → {4, 5, 6}
输出:
整数部分:1 2
小数部分:4 5 6