You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C++中使用double类型如何获取输入时的精确小数位数?

解决方案:保留输入浮点数的原始格式输出

你的核心问题在于**double类型无法存储输入时的十进制小数位数信息**——比如15.20和15.2在double中是完全相同的二进制值,程序无法区分你输入的是哪一个;同时fixed配合setprecision会强制固定小数位数并触发四舍五入,不符合你“输入多少位就输出多少位”的需求。

要实现完全保留输入格式(包括末尾的0、所有小数位且不四舍五入),最直接的方法是将输入当作字符串读取和输出,绕过double的精度丢失和格式转换问题:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string input_num;
    cout << "Skriv in ett flyttal: ";
    cin >> input_num;
    cout << "Du skrev in flyttalet: " << input_num << endl;

    return 0;
}

补充说明

如果后续需要对输入的数值进行计算,可以同时存储字符串和转换后的数值:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string input_num;
    cout << "Skriv in ett flyttal: ";
    cin >> input_num;
    
    // 转换为double用于计算
    double value;
    istringstream iss(input_num);
    iss >> value;
    
    // 输出原始格式
    cout << "Du skrev in flyttalet: " << input_num << endl;
    // 示例计算输出
    cout << "Dubbelt av talet är: " << value * 2 << endl;

    return 0;
}

内容的提问来源于stack exchange,提问作者Zeptuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:50:21