小数部の基数変換
10進数の0.1は2進数で0.0(0011)になり、4桁の循環が限りなく続きます。丸めたビット列ではありません。基数2から16の間で小数部を変換し、循環部分をかっこで示して周期の長さも数えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- 0.1
- 変換元の基数
- 10
- 変換先の基数
- 2
- 結果
- 0.0(0011)
- 最大桁数
- 32
- 非循環部分
- 0
- 周期
- 4
整数専用の基数変換は小数点で止まります。学生、コンパイラ作者、組み込み技術者には小数部も必要です。二進の0.1は二分の一、十進の0.1は十分の一であり、同じ有理数でも基数を変えると桁列が変わり、しばしば循環します。本小数部基数変換は、元基数2から16の純粋な小数を受け取り、必要なら0.1(6)のような括弧付き循環ブロックも解釈し、BigIntによる正確な有理数を再構成したうえで、剰余の対応表により真の循環を0.AB(C)として示し、単なる切り捨てではありません。
小数部の基数変換が整数変換と異なる理由
整数の基数変換は、一の位・基数・基数の二乗のように増える位取りを辿ります。小数の位取りは逆に、基数のマイナス一乗・マイナス二乗と縮みます。この一点だけで、0.1や0.
A3、0.0011を貼り付けたとき整数専用変換器は破綻します。十進の0.1はちょうど十分の一ですが、二進では同じ十分の一が無限展開0.0(0011)になります。十と二に、両方を有限で終わらせる共通因数がないためです。
教科書は十進の三分の一が三進で0.1、十進で0.(3)になる例で導入しますが、同じ関係は基数2から16のあらゆる組に成り立ちます。小数点を黙って落とす、あるいは大きなべきで掛けて丸めるだけの整数変換は、別の数を作り出します。
本機能は入力を丸めません。
入力契約・循環表記・応答の形
基数は2以上16以下の整数です。valueは小数部のみで、有限展開なら0.ABC、. ABC、ABCのいずれでも構いません。
元のアルファベットは0–9とA–F(大文字小文字を区別しません)。既知の循環がある場合は末尾に括弧ブロックを付けます。0.1(6)は十進で六分の一を0.1666…と書いたもの、0.(
3)は3の純循環です。 0以外の整数部は拒否されます。整数部と小数部の両方が必要なときは整数用の基数変換と併用してください。
小数部の基数変換が役立つ場面
情報科学の授業では、十進の0.1が二進の0.1ではないことを示し、毎回手計算の長除法なしで循環長を測るために小数部基数変換を使います。コンパイラやインタプリタの作者は、言語仕様の異なる基数構文に小数定数を埋め込むときのリテラル変換表を検証します。組み込みとDSPの技術者は、語長を固める前に、十進の設計値と二進・十六進の固定小数点パターンを照合します。
検証失敗は残高を消費しません。
活用例
情報の宿題と基数ラボ
0.1₁₀ ↔ 二進や 0.A₁₆ ↔ 十進のような授業用小数を変換し、終端と循環の結果を循環長付きで示します。
コンパイラと言語仕様の表
パーサとテストスイートで数値リテラルが基数2–16のあいだでどう書き換わるかを調べるとき、正確な小数桁列を生成します。
固定小数点とDSP設計の確認
語長とスケールを固定する前に、十進の設計値を二進または十六進の小数ビットパターンと照合します。
よくある質問
対応している基数はどれですか?
元と先の基数は2から16まで(両端含む)です。桁は元基数に応じて0–9とA–Fです。
循環の書き方は?
入力では0.1(6)や0.(3)のように末尾の(block)を使います。出力では循環展開は0. 接頭(block)となり、periodはブロック長です。
10進数の0.1が2進数で終わらないのはなぜですか?
10分の1は2進数では有限の桁で書けないためです。変換ツールは正確な分数を組み立て直し、0011が限りなく繰り返されることを見つけて、周期4の0.0(0011)と表示します。
整数部のある数も変換できますか?
できません。受け付けるのは小数点より後ろの部分だけで、0以外の整数部は受け付けません。整数部は整数用の基数変換ツールで変換し、あとで2つを組み合わせてください。
結果は何桁まで表示されますか?
初期設定では小数点以下32桁までで、上限を上げれば64桁まで表示できます。それより前に循環が見つかればかっこで閉じ、上限に先に達した場合は途中で打ち切ったことを示します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/base-fraction-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"0.1","from_base":10,"to_base":2}'const res = await fetch("https://api.kit.forhosting.com/dev/base-fraction-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "0.1",
"from_base": 10,
"to_base": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/base-fraction-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "0.1",
"from_base": 10,
"to_base": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/base-fraction-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"0.1","from_base":10,"to_base":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"0.1","from_base":10,"to_base":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/base-fraction-convert", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"value": "0.1",
"from_base": 10,
"to_base": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.base_fraction_convert",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
max_digits上限で病的に長い展開を抑えます。
小数部の基数変換が整数変換と異なる理由
固定小数点形式、IEEE風の教材デモ、アセンブラ定数表の設計者は、終端か循環長かについて正直な答え付きの書き換えを常に必要とします。桁を約分済みの正確な分数に解析し、古典的な剰余マップで目標桁を出すため、終端・純循環・混循環のいずれも、max_digitsによる制御された停止まで忠実に保たれます。
入力契約・循環表記・応答の形
JSON本体に value、from_base、to_base を送ってください。任意のmax_digits(既定32、最大64)は、停止前に出す目標桁数の上限です。それより前に剰余が再出現すれば括弧で周期を閉じ、truncatedはfalseです。成功時は正規化したvalue、両基数、max_digits、0.0(0011)のようなresult、non_repeating接頭、任意のrepeating、is_terminatingとis_repeating、period長、truncated、短いdecimal_approx、formula文字列を返します。元基数に無効な桁、2–16外の基数、空の小数、壊れた括弧はinvalid_inputで失敗し課金されません。例: value 0.1、from_base 十、to_base 二は、丸めた1ビットではなく十分の一の循環二進小数になります。
小数部基数APIが役立つ場面
実装はparseのティアAなので、成功した呼び出しは公開の基本料金$0.002のみで、モデルトークンも外向きネットワークもありません。
技術的な質問
小数を二つの基数のあいだでどう変換しますか?
value(例: 0.1 や 0.1(6))、from_base、to_base を整数2–16で送ってください。循環が検出されるとAPIは括弧付きで書き換えた小数を返します。
max_digitsは何を制御しますか?
目標の小数桁の出力上限です(既定32、最大64)。真の循環は剰余マップで早く閉じます。未検出の長い展開だけtruncatedがtrueになります。
小数部基数変換の料金は?
ブラウザのツールは無料です。APIは前払いKIT残高を成功1回あたり$0.002で使い、無効な入力は課金されません。