【发布时间】:2013-03-25 06:20:26
【问题描述】:
我有一个固定长度的整数类,我知道如何实现从我的类型到本机浮点数的转换,反之亦然,但有些特殊情况我不知道该怎么做:
假设有符号类型名称为T,无符号版本为UT,类型大小为128-bit
(1) 本机浮点值大于/小于T 或UT 可以表示的值?
(2) T 或 UT 的值大于/小于本机浮点数可以表示的值?
我应该截断、抛出异常还是将结果设置为零?
谢谢。
【问题讨论】:
-
我不认为这是一个编程问题!这取决于您的域。如果软件可以通过丢失精度来继续运行,那么您可以截断,否则会引发错误。
-
我认为最好存储一些标志,并根据该标志的值截断或抛出异常。
-
@OzairKafray:实际上这个类是我创建的开源固定长度算术类型库的一部分,它可以在任何地方使用,这就是我问这个问题的原因
-
您可能会觉得这很有趣:Comparing an Integer with a Float。不一定直接针对您正在做的事情,而是相关的。
-
您看过 strtod 和 strtof 函数吗?在出现此类错误时,它们会给出明确的返回值。您的操作员应该模仿这些操作。
标签: c++ floating-point type-conversion