我实现的是取出整数部分和小数部分,怎么还会四舍五入出10

img


// 6-10读入三个浮点数,将整数部分贺小数部分分别输出.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;
//将实数X分成整数部分和小数部分,形参inPart、fracPart是指针
void spiltFloat(float x, int *intPart, float *fracPart) {
    *intPart = static_cast<int>(x);//取x的整数部分
    *fracPart = x - *intPart;
}
int main()
{
    cout<<"Enter 3 float point numbers:" << endl;
    for (int i = 0; i < 3; i++)
    {
        float x, f;
        int n;
        cin >> x;
        spiltFloat(x, &n, &f);//变量地址作为实参
        cout<<"Integer Part=" <<n<<" Fraction Part=" <<f<< endl;

    }
    return 0;
}

一种简单的做法将输入的值转为string,然后以小数点分割成两部分

整数部分是 n=int(x);
小数部分是 f=x-n;

void spiltFloat(float x, int *intPart, float *fracPart) {
    *intPart = int(x);
    *fracPart = abs(x - *intPart);
}

img