【发布时间】:2015-01-22 22:37:59
【问题描述】:
假设我们正在一个平台上工作,其中long double 类型的精度严格高于 64 位。将给定的long double 转换为具有某些规定舍入(向上、向下、舍入到最近等)的普通双精度数的最快方法是什么?
为了使问题更准确,让我举一个具体的例子:让N 是给定的long double,而M 是double,其值最小化了(实际)值M - N,这样M > N。这个M 将是我想要找到的向上舍入转换。
我可以适当地设置 FP 环境的舍入模式并执行简单的强制转换(例如(double) N)吗?
澄清:您可以假设该平台支持 IEEE 浮点算术标准 (IEEE 754)。
【问题讨论】:
-
当然 FP 硬件会比任何位操作都快。您在寻找软件解决方案吗?
-
顺便说一句,你不是说
(double) N)吗? -
您的问题是特定于平台的,但您提出的解决方案正是我将如何完成这项任务。
-
@chux :这正是我的意思,感谢您的更正。
-
@tmyklebu :你是对的,你可以假设底层平台支持 IEEE 754 标准。我也在问题正文中添加了此说明。
标签: c++ c floating-point floating-accuracy floating-point-precision