簡體   English   中英

在Perl中,有沒有比打包打包更快的方法來獲取浮點位?

[英]Is there a faster way to get floating point bits than pack/unpack in Perl?

在Perl中,有沒有比打包打包更快的方法來獲取浮點位? 不必是IEEE754

您的問題毫無道理。 您需要一種快速的方法來緩慢地做某事。 如果我們知道您真正想做什么 ,我們可以提供更好的解決方案。

use strict;
use warnings;
use feature qw( say );

use Inline C => <<'__EOS__';

   void cast_double_to_uv(SV* sv) {
      dXSARGS;

      double d = (double)SvNV(sv);
      UV uv;

      if (sizeof(uv) < sizeof(double))
         croak("Integers too small to hold a double.");

      if (BYTEORDER == 0x1234) {
         /* Little-endian */
         memcpy(&uv, &d, sizeof(double));

         if (sizeof(uv) > sizeof(double))
            memset(((char*)&uv)+sizeof(double), 0, sizeof(double)-sizeof(uv));
      } else {
         /* Big-endian */
         if (sizeof(uv) > sizeof(double))
            memset(&uv, 0, sizeof(double)-sizeof(uv));

         memcpy(((char*)&uv)+sizeof(double)-sizeof(uv), &d, sizeof(double));
      }

      XSRETURN_UV(uv);
   }

__EOS__

say cast_double_to_uv(5.5);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM