c – 为什么sprintf_s在不同版本的Visual Studio中给出不同的结
发布时间:2020-12-16 03:24:41 所属栏目:百科 来源:网络整理
导读:sprintf_s(buf,"%.*f",14,0.182696884245135); 在VS2008 = 0.18269688424514 在VS2015 = 0.18269688424513 sprintf_s的行为是否改变了?我怎样才能得到旧的行为? 解决方法 我们为 the Universal CRT和Visual C 2015重写了浮点解析器和格式化程序,以提高正确
sprintf_s(buf,"%.*f",14,0.182696884245135); 在VS2008 = 0.18269688424514 在VS2015 = 0.18269688424513 sprintf_s的行为是否改变了?我怎样才能得到旧的行为? 解决方法
我们为
the Universal CRT和Visual C 2015重写了浮点解析器和格式化程序,以提高正确性.请参阅Visual C 2015的
Breaking Changes in Visual C++文档;有一节题为“浮点格式化和解析”.
Visual C 2015结果是正确的舍入结果.输入字符串0.182696884245135将转换为以下双精度值,这是最接近的可表示值: 0.18269688424513'49994693288181224488653242588043212890625 请注意第14个小数位后的刻度线.第15位是4,所以在用14位小数位格式化数字时,数字是“向下舍入”(或截断),而不是向上. Visual C 2008结果不正确.我不知道在解析或格式化过程中是否引入了错误.使用Universal CRT和Visual C 2015无法获得旧的,不正确的行为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |