Template‐ノート:進法

ページのコンテンツが他言語でサポートされていません。

mod[編集]

ウィキペディアの mod は信用できません。

{{#expr: 12345678901234567890 mod 10000000000000000}} → -1065172474984448
(正しくは 5678901234567890)

このため下式がうまく表示されません。

{{進法 | 10 | 12345678901234567890 }} → 1234 (現時点での結果)

対策を考えます。 - TAKASUGI Shinji (会話) 2008年3月14日 (金) 13:50 (UTC)[返信]

ウィキペディアが倍精度小数 (精度 53 ビット) を使っていることを確認します。
  • {{#expr: (134217728 * 67108864 - 1) mod 2}} → 1
    253 - 1 は桁落ちしない。
  • {{#expr: (134217728 * 134217728 - 1) mod 2}} → 0
    254 - 1 は桁落ちする。
次に十進数を正しく読めることを確認します。
  • {{#expr: (134217728 * 67108864) - 9007199254740991}} → 1
    253 - 1 = 9007199254740991 は桁落ちしない。
  • {{#expr: (134217728 * 67108864) - 9007199254740992}} → 0
    253 = 9007199254740992 は桁落ちしない。
  • {{#expr: (134217728 * 67108864) - 9007199254740993}} → 0
    253 + 1 = 9007199254740993 は桁落ちする。
計算途中は浮動小数点のままであることを確認します。
  • {{#expr: 9007199254740992 - (9007199254740992 * 9007199254740992 - 9007199254740992 * 99999) / 9007199254740992 }} → 99999
- TAKASUGI Shinji (会話) 2008年3月14日 (金) 14:56 (UTC)[返信]


n の時に桁落ちしない最大の np は、p = 53 log 2 / log n で求まります。

n p
2 53.00
3 33.44
4 26.50
5 22.83
6 20.50
7 18.88
8 17.67
n p
9 16.72
10 15.95
11 15.32
12 14.78
13 14.32
14 13.92
15 13.57
n p
16 13.25
17 12.97
18 12.71
19 12.48
20 12.26
21 12.07
22 11.88
n p
23 11.72
24 11.56
25 11.41
26 11.28
27 11.15
28 11.02
29 10.91
n p
30 10.80
31 10.70
32 10.60
33 10.51
34 10.42
35 10.33
36 10.25

現在の {{進法}} の仕様では、32 桁を最大とし、16 桁に区切って計算していますが、これだと底が 10 以上の時に桁落ちします。このため、底が 10 以上の時は 16 桁を最大とし、8 桁に区切って計算することにします。 - TAKASUGI Shinji (会話) 2008年3月18日 (火) 14:02 (UTC)[返信]