代码之家  ›  专栏  ›  技术社区  ›  Charles E. Grant

在Perl构建配置中定义了uselongdouble未定义,但dëlongdbl是什么意思?

  •  3
  • Charles E. Grant  · 技术社区  · 15 年前

    我使用的大多数perl安装都使用了未定义的longduble,但定义了d\u longdbl。从字面上看,我猜这意味着长双精度不被用作默认浮点类型,但长双精度是“受支持的”。我对长双打被“支持”意味着什么感到困惑。据我所知,Perl没有任何机制来从默认值转换或提升到更高的精度。如果默认的浮点类型是vanilla double,那么如何将长的double放入Perl程序中呢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   ysth    15 年前

    du longdbl只是说在构建perl的环境中支持长双工。

    这将导致C宏设置了\u LONG \u DOUBLE,这是使用\u LONG \u DOUBLE的先决条件,并启用L和ll s/printf修饰符。

    (XS模块也可以使用它,它们可以根据它自由更改行为。)

        2
  •  0
  •   dawg    15 年前

    您可以使用 Config 模块。下面是perldoc的示例代码,说明了如何使用:

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

    这个例子来自上一节 sprintf

    至于选角或升职,我认为你做不到。Perl对所有数学(包括整数数学)使用其最长的double。(除非您调用 pragma use integer )