1

我有一个固定长度的整数类,我知道如何实现从我的类型到本机浮点数的转换,反之亦然,但有些特殊情况我不知道该怎么做:

假设有符号类型名称是T,无符号版本是UT,类型大小是128-bit

(1) 本机浮点值大于/小于TUT可以表示什么?

(2) TorUT的值大于/小于本机浮点可以表示的值?

我应该截断、抛出异常还是将结果设置为零?

谢谢你。

4

3 回答 3

1

根据您的问题,我不确定您是否完全理解浮点数。浮点表示既有量级又有精度,但你的问题只是在谈论量级。因此,尽管您的整数可能在浮点可表示的范围内,但它仍然可能无法准确地表示为浮点。你关心准确性的损失吗?

我的选择是抛出一个异常,但也包括预先检查一个数字是否可以用另一种格式表示的方法。换句话说,让您的代码用户选择他们希望如何处理特殊情况。

于 2013-03-25T07:06:19.807 回答
0

最好的方法是构造最大和最小值相互兼容的整数-浮点对类

于 2013-03-25T06:27:47.363 回答
0

浮点值大于/小于 T 或 UT 可以表示的值?

可能。语言标准要求浮点类型支持至少与 10 37一样大的值,或者相​​当于 2 122,这接近于最大 128 位整数值(有符号或无符号)。

T 或 UT 的值大于/小于浮点可以表示的值?

可能。

IEEE-754 单精度浮点格式的最大有限值略小于 2 128,而 IEEE-754 双精度格式的最大有限值略小于 2 1024

这些答案最终取决于您的平台。

我应该截断、抛出异常还是将结果设置为零?

由你决定。

于 2013-03-25T06:43:36.290 回答