小数→固定小数点変換
小数を、Q.n形式の固定小数点で保存される整数に変換します。0.1を小数部8ビットにすると保存値は26で、実際の値は0.1015625、誤差は0.0015625です。ファームウェアやDSPの作業に向いており、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- 0.1
- 小数部のビット数
- 8
- 丸め
- Nearest
- Qフォーマット
- Q.8
- スケール
- 256
- 分解能
- 0.00390625
選んだビット数が暗黙の二進小数点の右側に置かれ、格納される整数はどれも一定の分解能の倍数になります。設計定数、フィルタ係数、センサ読み取りを変換する技術者に必要なのは、格納整数、丸め後の再構成誤差、そして 2 のマイナス n 乗の分解能であり、浮動小数点の十六進ダンプではありません。この小数→固定小数点変換器は実数の小数と小数部ビット数 n を受け取り、2 の n 乗を掛け、文書化された丸め方式で整数にスナップし、格納コード、再構成した実数、符号付き丸め誤差、その Q.n 格子の最終桁単位を返します。
Q 形式の意味と格納整数の作り方
Q 形式は Q.n や Qn と書かれることが多く、Texas Instruments のヘッダ、ARM CMSIS-DSP、無数の FPGA ツールチェーンが用いる、暗黙の二進小数点の右に n ビットを置く二進固定小数の慣例です。
格納整数 I が表す実数値は I を 2 の n 乗で割ったものであり、格子間隔――その形式の分解能、すなわち最終桁単位――はちょうど 2 のマイナス n 乗です。したがって小数 x を符号化するには x に 2 の n 乗を掛けて整数へ丸め、復号は同じ尺度での一回の除算です。
表現可能な値はすべて同じ絶対刻みを共有するため、決定的な丸めと安価な整数乗算累積が必要な音声コーデック、モータ制御ループ、参照表がこれを選びます。小数から固定小数点への変換、Q 形式変換、Q15 変換、float を Q31 へ、といった検索語はまさにこの作業を指します。人間向けの小数を取り、n を選び、格納整数と丸めが動かした量を読み返すことです。
C マクロは出しません。利用者が格納整数を自ら解釈するのでなければ、選んだ整数ビット幅の機械語全体も詰めません。古典的な確認は小数部 8 ビットでの十分の一です。
尺度は二百五十六、nearest 丸めは二十六を格納し、再構成値は二十六/二百五十六、符号付き丸め誤差は十分の一との差――まさにこのページが見せる三つ組です。
Q 形式変換器が役立つ場面
ファームウェア作者は、フィルタタップ、PID ゲイン、単位換算をヘッダへ貼るとき、Q15 や Q31 変数に載る正確な整数が必要であり、小数から固定小数点への変換器を使います。FPGA と HDL の試験台は、float を決して見ない RTL データパスと一致する刺激が必要なので、同じ数が要ります。
ゲームと音声のツールは、正規化した標本とアニメーション重みを固定格子へ載せ、バイナリアセットへ詰める前に、小数部 8 ビットで足りるかを作家が見られるよう、コードの横に丸め誤差を印字します。計算機算術を教える教室には、「二百五十六を掛けて丸める」という曖昧な説明ではなく、分解能と誤差を同時に示す決定的な神託が必要です。検証失敗は残高を消費しません。
活用例
ファームウェア定数と DSP タップ
設計上の小数をヘッダに置くべき Q15 または Q.8 整数へ変え、査読のために格納コードの横に丸め誤差を残します。
FPGA と HDL の試験台
RTL が見るのと同じ固定小数点刺激を生成し、スコアボードが 1 ulp を許容できるよう 2 のマイナス n 乗の分解能を明示します。
教室での計算機算術の確認
任意の n について格納整数・再構成実数・符号付き誤差を示します。二進では正確でない十分の一の古典例も含みます。
よくある質問
Q.n 数の分解能は何ですか?
分解能はちょうど 2^-n です。隣り合う格納整数の間隔です。
どの丸め方式を使うべきですか?
既定の nearest はゼロから遠ざかる半分で、DSP の通例です。選んだ方式は応答にエコーされます。
十分の一を正確に格納できないのはなぜですか?
0.1 は二進有理数ではありません。小数部 8 ビットでは最も近い格納整数は 26 で、26/256 = 0.1015625 として再構成されます。
小数をQ15に変換するには?
小数部を15ビットに設定します。ツールが小数に2の15乗を掛けて整数に丸め、保存される値、実際に表す値、丸め誤差を表示するので、そのままファームウェアに貼り付けられます。
小数部のビット数は最大いくつまで指定できますか?
52までです。0から52までの整数で指定し、値に2のその乗数を掛けた結果が安全な整数の範囲を超える場合は、下位ビットを黙って失わないよう変換を受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/decimal-to-fixed-point \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":0.1,"fractional_bits":8}'const res = await fetch("https://api.kit.forhosting.com/dev/decimal-to-fixed-point", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 0.1,
"fractional_bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/decimal-to-fixed-point",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 0.1,
"fractional_bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/decimal-to-fixed-point", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":0.1,"fractional_bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":0.1,"fractional_bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/decimal-to-fixed-point", 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,
"fractional_bits": 8
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.decimal_to_fixed_point",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_fractional_bits | 52 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
組み込みファームウェア、DSP カーネル、FPGA データパス、ゲームエンジンは、いまも多くの信号を IEEE-754 浮動小数点ではなく Q 形式の固定小数点整数として保持します。
Q 形式の意味と格納整数の作り方
これは IEEE-754 浮動小数点ではありません。指数フィールドも隠れ先頭 1 も段階的アンダーフローもありません。このエンドポイントはその契約だけを実装します。IEEE-754 ビットパターンへの変換もしません。それらは別の検索意図であり、別のツールが担います。
入力契約、丸め方式、応答フィールド
2 の n 乗が JavaScript の正確な安全整数のままになるためです。rounding は任意で、既定は nearest、すなわちゼロから遠ざかる半分です。多くの DSP 資料の慣例であり、同点を正の無限大へ送る JavaScript の Math.round とは違います。value と 2 の n 乗の積が安全整数範囲を出る場合、下位ビットを黙って落とすのではなくタスクを拒否します。stored が符号付き 16 ビットまたは 32 ビットレジスタに収まるかを知る必要がある場合は、ご自身の語長検査と組み合わせてください。必須フィールド二つと任意の方式一つを含む JSON 本体を送ってください。value は符号化する有限小数で、JSON 数値でも数値文字列でもよく、別名 decimal と number を受け付けます。fractional_bits は Q.n の整数 n で、0 から 52 まで(両端を含む)です。別名は frac_bits、n、q です。ほかの文書化済み方式は toward_zero(尺度済み積の切り捨て)、floor(負の無限大方向)、ceil(正の無限大方向)です。それ以外のトークンは invalid_input で失敗します。欠落フィールド、空文字列、非有限値、整数でない n、0 から 52 の外の n も失敗し、それらの失敗は課金されません。成功時、本体は value と fractional_bits をエコーし、丸め方式を名付け、q_format を Q.n として報告し、scale(2 の n 乗)、resolution(2 のマイナス n 乗)、stored(整数コード)、stored_hex(符号付き絶対値十六進)、reconstructed(stored を scale で割った値)、rounding_error(reconstructed から元の値を引いた差)、abs_error、丸め誤差がゼロのときの真偽値 exact、短い公式文字列を返します。このエンドポイントは総ビット幅を仮定しないため、十六進は隠れ容器の二の補数ではなく符号付き絶対値です。
Q 形式変換器が役立つ場面
実装は純粋な parse のティア A なので、成功した呼び出しは毎回、公開された基本料金 $0.002 であり、モデルトークンも外向きネットワークもありません。n を文書化された範囲に保ち、継続的インテグレーションのフィクスチャに stored と rounding_error を固定すれば、数値ライブラリ一式を立てずに、ヘッダ、シミュレータ、エッジワーカー向けの再現可能な Q 符号化が得られます。検索意図が float の IEEE-754 十六進パターンなら浮動小数点ビットパターンツールを使い、意図が誤差と分解能付きの Q.n 整数なら、これが契約です。
技術的な質問
小数を Q 形式の固定小数点整数へ変換するにはどうすればよいですか。
有限の value と 0 から 52 の整数 fractional_bits n を送ってください。API は stored = round(value × 2^n) に加え、reconstructed、rounding_error、resolution 2^-n を返します。
小数から固定小数点への変換器の料金はいくらですか。
ブラウザツールは無料です。API 要求は成功した呼び出しごとに前払い KIT 残高から $0.002 を使い、無効な入力は課金されません。