C++ double to string 默认保留小数
【摘要】 在C++中,将double转换为string通常使用std::to_string函数。默认情况下,std::to_string会保留double变量的精度。#include <iostream>#include <string> int main() { double value = 123.456789; std::string str = std::to_string(val...
在C++中,将double转换为string通常使用std::to_string函数。默认情况下,std::to_string会保留double变量的精度。
#include <iostream>
#include <string>
int main() {
double value = 123.456789;
std::string str = std::to_string(value);
std::cout << str << std::endl; // 输出: 123.456789
return 0;
}
这个代码乍一看很正常。但如果我们修改一下代码,就会发现不对劲了
#include <iostream>
#include <string>
int main() {
double value = 0.0000000001;
std::string str = std::to_string(value);
std::cout << str << std::endl; // 输出: 0.0000000
return 0;
}
可以看到当double的小数位数超出6位的时候,就会先经过四舍五入,然后才被转化为字符串。虽然还会保留6位小数,但值明显不是我们想要的(因为缺失了精度)
如果需要指定小数点后的位数,可以使用std::fixed和std::setprecision
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
std::string doubleToString(double value, int precision) {
std::ostringstream oss;
oss << std::fixed << std::setprecision(precision) << value;
return oss.str();
}
int main() {
double value = 123.456789;
std::string str = doubleToString(value, 4);
std::cout << str << std::endl; // 输出: 123.4568
value = 0.0000000001;
std::string str = doubleToString(value, 10);
std::cout << str << std::endl; // 输出: 0.0000000001
return 0;
}
在这个例子中,doubleToString函数将double转换为字符串,并保留到指定的小数位数(例如4位)。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)