C++ 如何进行正确的尺寸检查?
有四个变量:C++ 如何进行正确的尺寸检查?,c++,C++,有四个变量: short mantissa, exponent, base; long double factor; 我应该如何检查这三个组成部分中的每一个,以确保结果符合因素?或者让用户负责确保提供的数据有意义?因为因子是一个浮点值(长双精度),所以结果几乎总是合适的。当数字变大时,它并不总是非常精确,但它永远不会溢出,除非指数大于长双精度的尾数(通常为11位,因此通常为2^11) 如果您想粗略检查精度,请计算答案,然后检查它是否在合理的范围内,例如[10^20,10^-20]。
short mantissa,
exponent,
base;
long double factor;
我应该如何检查这三个组成部分中的每一个,以确保结果符合因素?或者让用户负责确保提供的数据有意义?因为因子是一个浮点值(
长双精度
),所以结果几乎总是合适的。当数字变大时,它并不总是非常精确,但它永远不会溢出,除非指数大于长双精度
的尾数(通常为11位,因此通常为2^11)
如果您想粗略检查精度,请计算答案,然后检查它是否在合理的范围内,例如[10^20,10^-20]。基本上您无法准确地执行此操作,因为标准未指定
long double
存储数据的格式。但是,您可以通过比较来近似您想要的:numeric\u limits::digits
,numeric\u limits::radix
,numeric\u limits::min\u exponent
,和numeric\u limits::max\u exponent标题给出了一些最大值和最小值,您可以从中导出位限制,但这似乎有点尴尬;我个人要做的是明确地将尾数
、指数
和基数
的限制定义为常数,针对您支持的每个平台,使用一个#pragma警告和注释来处理您不认识的平台。等等,您的意思是说,从可以表示量级的意义上来说,适合吗,还是你真的在乎精度的损失?