std::to_string是否保证在转换浮点值时包含小数点
Is std::to_string guaranteed to include a decimal point when converting floating point values?
使用以下代码,
int main() {
for(;;) {
float d;
cin >> d;
cout << std::to_string(d) << endl;
}
}
to_string
似乎总是返回一个包含小数点和六位数字的字符串。这种行为有保证吗(不包括nan
和infinity
)?
根据cplusplus.com,"根据需要写尽可能多的数字来表示整数部分,后面是小数点字符和六位小数"。
to_string
似乎总是返回一个包含小数点和六位数字的字符串。这种行为有保证吗(不包括nan
和infinity
)?
是的。std::to_string
的输出由输出std::sprintf
控制,默认精度为6。
发件人http://en.cppreference.com/w/cpp/string/basic_string/to_string,
7,8)将浮点值转换为具有与
std::sprintf(buf, "%f", value)
对于足够大的buf
将产生的内容相同内容的字符串。
发件人http://en.cppreference.com/w/cpp/io/c/fprintf,(强调矿)
f、 f
以[-]ddd.ddd.格式将浮点数转换为十进制表示法
精度指定小数点字符后出现的最小位数默认精度为6。
洞穴
小数点并不是在所有区域设置中都用作小数标记。根据区域设置,您可能会为十进制标记获取不同的字符。但无论区域设置如何,都会有一个十进制标记。
否。小数点也可以是逗号,这取决于运行程序的计算机(在Linux上由$LANG
控制,在Windows上由其他方式控制)。C++文档中写道:
std::to_string依赖于当前区域设置进行格式化
这意味着,例如在德国运行时,std::to_string使用逗号,而在美国的计算机上运行时,它使用点作为分隔符。要强制使用句点作为小数分隔符,必须在调用To_string:之前设置区域设置
#include <clocale>
std::setlocale(LC_NUMERIC, "C")
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- g++ 说函数不存在,即使包含正确的标头
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- Visual C++GC接口如何启用它以及要包含哪个库
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- std::to_string是否保证在转换浮点值时包含小数点