我想保护我的变量不存储溢出值。
我在计算一棵树的每一个层次和某些阶段的损失。
我想在我的c++代码中做下面的事情。
ForExample:
long double loss; //8 Bytes Floating Number
loss=calculate_loss();
if(loss value is greater than Capacity)
do
store 8 bytes in loss abd neglect remaining;
end if发布于 2013-07-29 07:09:28
如果您的容量应该限制在双(或浮动)数据类型的最大或最小容量,则可以使用浮点异常(不要与C++异常混淆)。它们的信令需要在编译器选项中启用,您可以将它们映射到检测数据类型溢出的C++异常。
这里有一个msdn页面,它很好地描述了FP异常。在页面底部,您将找到如何将其映射到C++异常的示例。http://msdn.microsoft.com/en-us/library/aa289157%28v=vs.71%29.aspx
发布于 2013-07-29 02:34:53
在limits.h中有一个C++,但是
if(loss value is greater than Capacity)顾名思义不能工作。loss中的值不能大于它自己的数据类型最大值。
您的示例值(5乘以10^302 )确实大得令人怀疑。再加上你说你有时会得到意想不到的负值,我建议你好好看看你的计算结果。
合理的猜测:您正在修改指针,并将指向整数和浮点数的指针混在一起。但没人能不看代码就知道。
https://stackoverflow.com/questions/17914499
复制相似问题