Décimal vers virgule fixe
Transformez un décimal en l'entier stocké au format Q.n à virgule fixe : 0,1 avec 8 bits fractionnaires stocke 26, qui vaut en réalité 0,1015625, soit une erreur de 0,0015625. Conçu pour le firmware, le DSP et les FPGA. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Valeur
- 0,1
- Bits fractionnaires
- 8
- Arrondi
- Nearest
- Format Q
- Q.8
- Échelle
- 256
- Résolution
- 0,00390625
L’ingénieur qui convertit une constante de conception, un coefficient de filtre ou une lecture de capteur a besoin de l’entier stocké, de l’erreur de reconstruction après arrondi et de la résolution deux puissance moins n — pas d’un dump hexadécimal de flottant. Ce convertisseur décimal vers virgule fixe accepte une valeur décimale réelle et un nombre n de bits fractionnaires, multiplie par deux puissance n, projette sur un entier selon un mode d’arrondi documenté, et renvoie le code stocké, le réel reconstruit, l’erreur d’arrondi signée et l’unité du dernier rang de cette grille Q.n.
Ce que signifie le format Q et comment l’entier stocké se forme
Le format Q, souvent écrit Q.n ou Qn, est la convention utilisée dans les en-têtes Texas Instruments, ARM CMSIS-DSP et d’innombrables chaînes d’outils FPGA pour un nombre binaire à virgule fixe avec n bits à droite du point binaire implicite. La valeur réelle représentée par un entier stocké I est I divisé par deux puissance n, si bien que le pas de la grille — la résolution, ou unité du dernier rang de ce format — vaut exactement deux puissance moins n.
Encoder un décimal x consiste donc à calculer x fois deux puissance n puis à arrondir vers un entier ; décoder est une seule division par la même échelle. Toutes les valeurs représentables partagent le même pas absolu, c’est pourquoi les codecs audio, les boucles de contrôle moteur et les tables de correspondance le préfèrent lorsqu’ils ont besoin d’un arrondi déterministe et de multiplications-accumulations entières bon marché.
Des requêtes telles que convertisseur décimal vers virgule fixe, convertisseur format Q, convertisseur Q15 et convertir un flottant en Q31 décrivent exactement ce travail : prendre un décimal humain, choisir n, et relire l’entier stocké plus l’écart introduit par l’arrondi. Ce point d’accès implémente ce contrat et rien d’autre. Ce sont d’autres intentions de recherche, servies par d’autres outils.
Un contrôle classique est le décimal un dixième avec huit bits fractionnaires : l’échelle vaut deux cent cinquante-six, l’arrondi nearest stocke vingt-six, la valeur reconstruite est vingt-six sur deux cent cinquante-six, et l’erreur d’arrondi signée est l’écart par rapport à un dixième — précisément le triplet que cette page est conçue pour montrer.
Contrat d’entrée, modes d’arrondi et champs de la réponse
Les champs manquants, les chaînes vides, les valeurs non finies, un n non entier ou un n hors de zéro à cinquante-deux échouent aussi, et ces échecs ne sont pas facturés. Si le produit de value et de deux puissance n quitte la plage des entiers sûrs, la tâche est rejetée plutôt que de perdre silencieusement des bits de poids faible.
Associez la réponse à votre propre contrôle de largeur de mot si vous devez savoir si stored tient dans un registre signé de seize ou trente-deux bits ; ce point d’accès n’assume aucune largeur totale, aussi la forme hex est une magnitude signée, non le complément à deux d’un conteneur caché.
Où un convertisseur au format Q justifie son existence
Les auteurs de firmware utilisent un convertisseur décimal vers virgule fixe lorsqu’ils collent un tap de filtre, un gain PID ou une conversion d’unités dans un en-tête et ont besoin de l’entier exact qui occupera une variable Q15 ou Q31. Les bancs FPGA et HDL ont besoin du même nombre pour que le stimulus du testbench coincide avec le datapath RTL qui ne voit jamais de flottant.
Les outils de jeu et d’audio convertissent des échantillons normalisés et des poids d’animation sur une grille fixe avant de les empaqueter dans un actif binaire, puis veulent l’erreur d’arrondi imprimée à côté du code afin qu’un artiste voie si huit bits fractionnaires suffisent. Les salles de classe qui enseignent l’arithmétique des ordinateurs ont besoin d’un oracle déterministe qui montre résolution et erreur ensemble, plutôt qu’un « multipliez par deux cent cinquante-six et arrondissez » à l’œil.
Cas d’usage
Constantes de firmware et taps DSP
Transformez un décimal de conception en l’entier Q15 ou Q.8 qui appartient à un en-tête, et conservez l’erreur d’arrondi à côté du code stocké pour relecture.
Bancs de test FPGA et HDL
Générez le même stimulus à virgule fixe que verra le RTL, avec une résolution explicite de deux puissance moins n afin que les scoreboards tolèrent un ulp.
Contrôles d’arithmétique en classe
Montrez aux élèves l’entier stocké, le réel reconstruit et l’erreur signée pour tout n, y compris l’exemple classique d’un dixième, qui n’est pas exact en binaire.
Questions fréquentes
Quelle est la résolution d’un nombre Q.n ?
La résolution vaut exactement 2^-n : le pas entre deux entiers stockés voisins.
Quel mode d’arrondi faut-il utiliser ?
Le mode choisi est répété dans la réponse.
Pourquoi un dixième ne peut-il pas être stocké exactement ?
0.1 n’est pas un rationnel dyadique. Avec huit bits fractionnaires, l’entier stocké le plus proche est 26, qui se reconstruit en 26/256 = 0.1015625.
Comment convertir un décimal en Q15 ?
Choisissez 15 bits fractionnaires. L'outil multiplie votre décimal par deux puissance 15, l'arrondit à un entier et affiche le code stocké, la valeur réellement représentée et l'erreur d'arrondi, prêts à coller dans un firmware.
Combien de bits fractionnaires puis-je utiliser au maximum ?
Jusqu'à 52. Le nombre doit être entier, de 0 à 52, et si la valeur multipliée par deux à cette puissance sort de la plage des entiers sûrs, la conversion est refusée au lieu de perdre discrètement ses bits de poids faible.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
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)Exemple de requête
{
"value": 0.1,
"fractional_bits": 8
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.decimal_to_fixed_point",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_fractional_bits | 52 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Les firmwares embarqués, les noyaux DSP, les datapaths FPGA et les moteurs de jeu stockent encore de nombreux signaux sous forme d’entiers à virgule fixe au format Q, plutôt qu’en flottants IEEE-754 : un nombre choisi de bits se place à droite d’un point binaire implicite, si bien que chaque entier stocké est un multiple d’une résolution fixe.
Ce que signifie le format Q et comment l’entier stocké se forme
Ce n’est pas de la virgule flottante IEEE-754 : il n’y a ni champ d’exposant, ni un leader caché, ni underflow progressif. Il n’émet pas de macros C, n’empaquette pas un mot machine complet avec une largeur de bits entiers choisie sauf si vous interprétez vous-même l’entier stocké, et ne convertit pas vers des motifs de bits IEEE-754.
Contrat d’entrée, modes d’arrondi et champs de la réponse
Envoyez un corps JSON avec deux champs obligatoires et un mode optionnel. value est le décimal fini à encoder ; il peut arriver comme nombre JSON ou comme chaîne numérique, et les alias decimal et number sont acceptés. fractional_bits est l’entier n dans Q.n, de zéro à cinquante-deux inclus, afin que deux puissance n reste un entier sûr exact de JavaScript ; les alias comprennent frac_bits, n et q. rounding est optionnel et vaut par défaut nearest, c’est-à-dire moitié en s’éloignant de zéro — la convention de la plupart des notes DSP, et non celle de JavaScript Math.round, qui envoie les égalités vers plus l’infini. Les autres modes documentés sont toward_zero (tronquer le produit mis à l’échelle), floor (vers moins l’infini) et ceil (vers plus l’infini) ; tout autre jeton échoue avec invalid_input. En cas de succès le corps répète value et fractional_bits, nomme le mode d’arrondi, indique q_format comme Q.n et renvoie scale (deux puissance n), resolution (deux puissance moins n), stored (le code entier), stored_hex (hex de magnitude signée), reconstructed (stored sur scale), rounding_error (reconstructed moins la valeur d’origine), abs_error, un booléen exact lorsque l’erreur arrondie est nulle, et une courte chaîne de formule.
Où un convertisseur au format Q justifie son existence
Parce que l’implémentation est du parse de niveau A pur, chaque appel réussi coûte le tarif de base publié $0.002 sans jetons de modèle ni réseau sortant ; une validation en échec ne consomme pas le solde. Lorsque l’intention de recherche est le motif hex IEEE-754 d’un flottant, utilisez un outil de motif de bits en virgule flottante ; lorsque l’intention est un entier Q.n avec son erreur et sa résolution, voici le contrat.
Questions techniques
Comment convertir un décimal en entier à virgule fixe au format Q ?
Envoyez un value fini et un fractional_bits entier n de 0 à 52. L’API renvoie stored = round(value × 2^n), plus reconstructed, rounding_error et resolution 2^-n.
Combien coûte le convertisseur décimal vers virgule fixe ?
L’outil du navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.