[#42503] floatの値がずれる — Sato Hiroshi <hirocy.f01@...>

hirocyと申します.

33 messages 2006/07/04
[#42504] Re: floatの値がずれる — rubikitch <rubikitch@...> 2006/07/04

From: Sato Hiroshi <hirocy.f01@plala.to>

[#42505] Re: floatの値がずれる — Sato Hiroshi <hirocy.f01@...> 2006/07/04

hirocyです.るびきちさん,ありがとうございます.

[#42569] JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Takahiro Kambe <taca@...>

こんばんは。

19 messages 2006/07/11
[#42570] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[#42572] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Takahiro Kambe <taca@...> 2006/07/11

In message <1152619872.835566.21152.nullmailer@x31.priv.netlab.jp>

[#42575] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[ruby-list:42561] Re: float の値がずれる

From: "Shigeo Kobayashi" <shigeo@...>
Date: 2006-07-10 12:12:00 UTC
List: ruby-list #42561
小林です。

----- Original Message ----- 
From: "Shigeo Kobayashi" <shigeo@tinyforest.gr.jp>
Subject: [ruby-list:42535] Re: float の値がずれる

> ああ、bigdecimal/util.rb がバグってますね。
> 後ほど、'_' の処理も含めてパッチをだしますが、
> どなたかそのパッチを適用していただけますでしょうか?

bigdecimal.c と bigdecimal/util.rb のパッチです。
お手数をかけますが、よろしく御願い致します。

Attachments (2)

bigdecimal.c.patch (775 Bytes, text/x-diff)
--- bigdecimal.c.old	2005-09-16 16:22:02.000000000 +0900
+++ bigdecimal.c	2006-07-01 22:31:55.984375000 +0900
@@ -1905,14 +1905,25 @@
        return vp;
     }
 
-    /* Skip all spaces */
+    /* Skip all '_' after digit: 2006-6-30 */
+    ni = 0;
     psz = ALLOCA_N(char,strlen(szVal)+1);
     i   = 0;
     ipn = 0;
     while(psz[i]=szVal[ipn]) {
-        if(ISSPACE(szVal[ipn])) {ipn++;continue;}
+        if(ISDIGIT(psz[i])) ++ni;
+        if(psz[i]=='_') {
+            if(ni>0) {ipn++;continue;}
+            psz[i]=0;
+            break;
+        }
         ++i; ++ipn;
     }
+    /* Skip trailing spaces */
+    while((--i)>0) {
+        if(ISSPACE(psz[i])) psz[i] = 0;
+        else                break;
+    }
     szVal = psz;
 
     /* Check on Inf & NaN */
util.rb.patch (515 Bytes, text/x-diff)
--- util.rb.old	2006-07-06 22:28:04.187500000 +0900
+++ util.rb	2006-07-10 20:55:50.250000000 +0900
@@ -48,11 +48,10 @@
      numerator = sign*digits.to_i
      denomi_power = power - digits.size # base is always 10
      if denomi_power < 0
-        denominator = base ** (-denomi_power)
+        Rational(numerator,base ** (-denomi_power))
      else
-        denominator = base ** denomi_power
+        Rational(numerator * (base ** denomi_power),1)
      end
-     Rational(numerator,denominator)
   end
 end
 

In This Thread