主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

无效的科学记数法格式

使用无效格式会降低代码的可读性。

自 R2022b 起

描述

此问题发生在您以指数形式表示浮点数时,但未使用标准科学记数法格式(即小数点前至少有一个非零数字)。

Polyspace® 不标记小数点前用于表示字面值 0.0 的零,例如 0.00E+0

风险

使用非标准的科学记数法来表示字面量会使您的代码难以阅读且更容易出错。

修复

使用标准格式,在小数点前用一个非零数字表示浮点数字面值的科学记数法。

示例

全部展开

#include <stdio.h>

void printUsingEFormat()
{
	float literalVals[] = {
		1154.12e+5L, //more than one digit before decimal
		.1E4F,       //no digit before decimal
		58.L,
		0.1E4F,     //zero digit before decimal
		1.34e+4,
		13.4e+3,    //more than one digit before decimal
		0.0000E+0,
		0xa.bp10l,
		0x15.0p5};
	for (int i = 0;
		 i < sizeof(literalVals) / sizeof(literalVals[0]);
		 ++i)
	{
		printf("%.6e\n", literalVals[i]);
	}
}

在此示例中,函数 printUsingEFormat() 循环遍历数组 literalVals 的元素,并以科学计数法格式打印每个元素。

Polyspace 将所有未使用标准科学记数法的文字标记为。其他数组元素使用正确的格式或未使用科学计数法表示。

结果信息

组:良好做法
语言:C | C++
默认值:关闭
命令行语法:INVALID_NOTATION_ON_E_CONSTANT
影响

版本历史记录

在 R2022b 中推出