Visual Studio 2015中的格式更改
Format changes in Visual Studio 2015
示例程序。只需打印转换后的值。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char buffer[256] = "";
sprintf_s(buffer, "%.2e", -20.12345);
cout << buffer << endl;;
return 0;
}
在Visual Studio 2010和Visual Studio 2015中运行相同的程序。
它们显示出不同的输出。
Visual Studio 2010输出:
-2.01e+001
Visual Studio 2015输出:
-2.01e+01
为什么它显示出不同的输出?任何人都可以解释。
感谢
<m>E<n>
形式的科学记数法表示m*10n,其中m
和n
都可以是正的或负的。这意味着-2.01e+001
和-2.01e+01
实际上是同一个数字(-2.01*101)。但是,当使用e
格式说明符时,您实际上可以输出具有非常大或非常小e值的数字,例如,您可以输出2e150
。三位数指数用于填充输出字符串,使其更加均匀(考虑2e99, 2e101
与2e099, 2e101
)。
也可以使用_set_output_format函数来更改将显示的位数。值得注意的是,在该文档页面上,
默认情况下,函数(如printf、wprintf)和Visual C++标准C库中的相关函数输出的浮点数会为指数打印三位数字,即使不需要三位数字来表示指数值也是如此。零用于将值填充为三位数字。
正如Chux在《如何控制';e';在C printf%e?中?,顺从的行为是使用两位数字作为指数,除非需要更多数字。在VS-2015之前,VS是不合规的。显然,提供_set_output_format是为了允许兼容行为。
由于_set_output_format在VS-2015中被删除,并且行为被更改为两位数的指数,因此必须假设VS试图更符合要求。
我发现这是因为我需要在我的应用程序中的兼容行为:-(
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在openssl-ecc中获取十六进制格式的私钥
- 试图在visual studio上用C++创建一个桌面应用程序
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 如何在MS Visual Studio 2019中运行QT UI
- TDateTime格式在C++Builder中不会更改
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- 需要有关使用 Visual Studio 17 将 QT 桌面应用程序打包为 AppX 格式的指导
- Microsoft Visual Studio导入库的格式
- Visual Studio 是否正式支持 __int64 的 "%lld" 格式说明符?
- boost::log 输出到 Visual Studio 输出控制台 - 为格式添加额外的 LF/CR
- 在C++/Visual Studio中,通过给定数据格式(doubles、float、int、1位bools)的UDP发
- Visual Studio 2015中的格式更改
- 如何向Visual Studio Clang-Format插件提供clang格式文件
- 当我打开visual studio时,MFC DateTime选择器格式会发生变化
- Visual Studio c++代码格式-返回类型+ classname::func缩进
- 是否有工具可以将Visual Studio对象文件转换为GCC格式?