[英]behavior of float-point conversion to integer
我有一个固定长度的整数类,我知道如何实现从我的类型到本机浮点数的转换,反之亦然,但是在某些特殊情况下,我不知道该怎么做:
假设带符号的类型名称为T
而无符号的版本为UT
,类型大小为128-bit
(1)本机浮点值大于/小于T
或UT
可以代表什么?
(2) T
或UT
值大于/小于本机浮点可以表示的值?
我应该截断,引发异常还是将结果设置为零?
谢谢。
根据您的问题,我不确定您是否完全理解浮点数。 浮点表示形式既有幅度又有精度,但是您的问题仅是在谈论幅度。 因此,尽管您的整数可能在浮点可表示的范围内,但仍可能无法准确地表示为浮点。 您是否担心准确性下降?
我的选择是引发一个异常,但还要包括一些方法来预先检查一个数字是否可以用另一种格式表示。 换句话说,让您的代码用户可以选择如何处理特殊情况。
最好的方法是构造其最大和最小值相互兼容的整数浮点对类。
浮点值大于/小于T或UT可以代表什么?
可能。 语言标准要求浮点类型支持至少等于10 37或等效于2 122的值 ,该值接近最大128位整数值(有符号或无符号)。
T或UT的值大于/小于浮点数可以表示什么?
可能。
IEEE-754单精度浮点格式的最大有限值略小于2 128 ,而IEEE-754双精度浮点格式的最大有限值略小于2 1024 。
这些答案最终取决于您的平台。
我应该截断,引发异常还是将结果设置为零?
由你决定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.