にっき

2007/12/06 18:48:38

分数の割り算


むうみんがそ〜しゃるぶっくま〜くは使ってないのもあってどこのをぺったんしようか迷ってたけど
AddClips ってまとめてくれるとこを発見したからさくっとぺったん☆
・・・ってこんなにもあるのにう?(´ω`;【みかん
こまかいとこは AddClips のなかのひとにおまかせするってことで☆
今日も Lua でお題をくりあしてくにう☆ヾ(・x・。【みかん



分数を少数に分解
循環小数なんてき〜わ〜ど見るのすてきにおひさしぶりだにゃぁ・・・ (´ω`;【みかん
function decimal(a,b)
    local ret = {};
    local loop = {};
    
    if a >= b then
        table.insert(ret,math.floor(a / b) .. [[.]]);
        a = a - ret[1] * b;
    else
        table.insert(ret,[[0.]]);
    end
    
    while a ~= 0 do
        loop[a] = table.getn(ret) + 1;
        a = a * 10;
        table.insert(ret,math.floor(a / b));
        
        a = math.mod(a,b);
        if loop[a] ~= nil then
            ret[loop[a]] = [[{]] .. ret[loop[a]];
            table.insert(ret,[[}]]);
            break;
        end
    end
    
    return table.concat(ret);
end

print(decimal(arg[1],arg[2]));

お題では a < b でおっけぃになってたけど a > b でもだいじょ〜ぶなようにこんなかんじかなぁ?
おまけでつけた整数部分は普通に割り算して小数部分を切り捨てちゃえばおっけぃ☆
本題の小数部分は筆算するときの手順をそのままぷろぐらむに☆
たとえば 3 / 14 だと
     .21428571...
14 ) 3
     ----
     30
     28
     ----
      20
      14
      ----
       60
       56
       ----
        40
        28
        ----
        120
        112
        ----
          80
          70
          ----
          100
           98
           ----
            20
            14
            ----
             6

みたいにあまりを10倍しながら割り算して,あまりにおんなじ値が出てくると
そこから循環しちゃうからそれをる〜ぷの終了条件にしてるだけかなぁ?
引数にaとbを指定して実行すると
>lua5.1.exe 009-decimal.lua 3 8
0.375

>lua5.1.exe 009-decimal.lua 3 14
0.2{142857}

>lua5.1.exe 009-decimal.lua 297 14
21.2{142857}

こんなかんじでだいじょ〜ぶ・・・だよね?(´ω`;【みかん


こめんと

こめんとする?



 
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆
また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん
さぶこんてんつ
前月 2024年 11月 翌月
          1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
             
  • あじ あじ
  • ED ED
  • えでん えでん
  • えれふぃ えれふぃ
  • ぐらぶれ ぐらぶれ
  • etc etc
  • にっき にっき

あわせて読みたい

先頭に戻る
めにう 先頭に戻る