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警告和注释来处理您不认识的平台。

等等,您的意思是说,从可以表示量级的意义上来说,适合吗,还是你真的在乎精度的损失?