uselongdouble undefined是什么意思,但在Perl构建配置中定义了d_longdbl?

时间:2010-09-15 23:43:26

标签: perl

我使用的大多数perl安装都使用了longdouble undefined,但定义了d_longdbl。从字面上看,我猜这意味着长双打不会被用作默认的浮点类型,但是长双打是“支持的”。我很困惑,虽然长期双打被“支持”意味着什么。据我所知,Perl没有任何机制可以从默认设置中提升或提升到更高的精度。如果默认浮点类型是一个vanilla double,那么如何将长双精度转换为Perl程序。

2 个答案:

答案 0 :(得分:2)

d_longdbl只是说在构建perl的环境中支持long double。

这会导致设置C宏HAS_LONG_DOUBLE,这是USE_LONG_DOUBLE的先决条件,并启用L和ll s / printf修饰符。

(它也适用于XS模块,可以根据它自由改变行为。)

答案 1 :(得分:0)

您可以使用Config模块在​​运行时检查对长双打的支持。以下是来自perldoc的示例代码,用于显示用途:

  use Config;
    if ($Config{uselongdouble} eq "define") {
    print "long doubles by default\n";
    }

这个例子来自sprintf部分(我刚刚正在阅读......),还有其他例子。

关于铸造或推广,我认为你不能。 Perl对所有数学使用最长的双精度数,包括整数数学。 (除非您调用pragma use integer