Quindi stavo pensando, come si converte una frazione decimale in una frazione esadecimale? Quali sono alcuni metodi per la conversione e ci sono scorciatoie?Come convertire le frazioni decimali in frazioni esadecimali?
risposta
È possibile utilizzare questo algoritmo:
- Prendete una parte frazionaria del numero (cioè parte intera è pari a zero)
- Moltiplicare per
- Converti parte intera in esadecimale e metterlo giù
- Andare al punto 1
per esempio, cerchiamo di scoprire rappresentazione esadecimale per pi = 3,141592653589793 ...
parte intera è evidente - 0x3; Per quanto riguarda la parte frazionaria (,141592653589793) abbiamo
0.14159265358979 * 16 = 2.26548245743664; int part 2 (0x2); frac 0.26548245743664
0.26548245743664 * 16 = 4.24771931898624; int part 4 (0x4); frac 0.24771931898624
0.24771931898624 * 16 = 3.96350910377984; int part 3 (0x3); frac 0.96350910377984
0.96350910377984 * 16 = 15.41614566047744; int part 15 (0xF); frac 0.41614566047744
0.41614566047744 * 16 = 6.65833056763904; int part 6 (0x6); frac 0.65833056763904
0.65833056763904 * 16 = 10.53328908222464; int part 10 (0xA); ...
Così pi (esadecimale) = 3.243F6A ...
Possible (C#) l'attuazione
public static String ToHex(Double value) {
StringBuilder Sb = new StringBuilder();
if (value < 0) {
Sb.Append('-');
value = -value;
}
// I'm sure you know how to convert decimal integer to its hexadecimal representation
BigInteger bi = (BigInteger) value;
Sb.Append(bi.ToString("X"));
value = value - (Double)bi;
// We have integer value in fact (e.g. 5.0)
if (value == 0)
return Sb.ToString();
Sb.Append('.');
// Double is 8 byte and so has at most 16 hexadecimal values
for (int i = 0; i < 16; ++i) {
value = value * 16;
int digit = (int) value;
Sb.Append(digit.ToString("X"));
value = value - digit;
if (value == 0)
break;
}
return Sb.ToString();
}
test
Console.Write(ToHex(Math.PI)); // <- returns "3.243F6A8885A3"
È possibile ottenere la parte frazionaria moltiplicando il numero di input per un numero intero di cifre esadecimali. Quindi puoi usare la normale conversione da intero a esadecimale. Ad esempio, per ottenere 6 caratteri dopo il punto decimale (hexa), moltiplicare la parte frazionaria per 0x1000000.
Ecco un codice Java che lo farà.
String toHexFraction(double x, int digits) {
// Get fractional part.
if (x < 0.0)
x = 0.0 - x;
x = x % 1.0;
// Shift left by n digits
long multiplier = (1L << (digits * 4));
long fraction = (long)(x * multiplier);
// Convert integer to hex string.
// String should have at least n digits; prefix with zeros if not.
String hex = Long.toHexString(fraction);
String padding = "000000000000000";
hex = padding.substring(0, digits - hex.length()) + hex;
return hex;
}
String toHexInteger(double x) {
long whole = (long) x;
String prefix;
if (whole < 0) {
// Long.toHexString treats the number as an unsigned integer.
whole = 0 - whole;
prefix = "-";
} else {
prefix = "";
}
return Long.toHexString(whole);
}
String toHex (double x, int digits) {
return toHexInteger(x) + "." + toHexFraction(x, digits);
}
Il numero di cifre sarà limitata dal grande intero è possibile rappresentare in un doppio.
Questo dovrebbe funzionare anche per altre basi quadrate, ad es. per cambio ottale digits * 4
a digits * 3
e utilizzare Long.toOctalString
.
- 1. Frazioni in Python
- 2. Come vengono rappresentate le frazioni nei computer?
- 3. Js Numbers - frazioni
- 4. Ridurre intere frazioni Algoritmo
- 5. Come ottenere le frazioni in una divisione intera?
- 6. Come visualizzare le frazioni nella vista testo Android?
- 7. Esiste un modulo Python in cui posso convertire facilmente le frazioni miste in un float?
- 8. R - Conversione di frazioni in testo a numerico
- 9. Generazione frazioni continue per radici quadrate
- 10. Python ha una funzione per ridurre le frazioni?
- 11. lista Conversione di frazioni di galleggianti in Python
- 12. Come trattare il fatto che la maggior parte delle frazioni decimali non può essere rappresentata in modo accurato in binario?
- 13. Per cosa è U + 215F (numero numeratore frazioni)?
- 14. Come convertire una NSString in valori esadecimali
- 15. Come posso convertire i numeri esadecimali in numeri decimali nel calcolo di Emacs?
- 16. come posso calcolare il pow di frazioni o il nth root square in numpy?
- 17. Come rendere un file batch in attesa di frazioni di secondo?
- 18. Convertire una frazione di testo in un decimale
- 19. Come posso convertire stringhe esadecimali in numeri in Perl?
- 20. Java 8 DateTimeFormatter parsing per frazioni di secondo opzionali di varia rilevanza
- 21. Debug "Android Studio" - visualizza le variabili come esadecimali
- 22. Come posso convertire i decimali? al decimale
- 23. Lettura valori esadecimali in inglese
- 24. Come convertire l'intero dataframe in numerico preservando i decimali?
- 25. PHP - Convertire millisecondi a ore: minuti: Seconds.fractional
- 26. Formattazione Tutte le posizioni decimali in R
- 27. come convertire tra gradi, minuti, secondi e coordinate decimali
- 28. Come convertire una stringa di cifre esadecimali in valore che rappresenta in Lua
- 29. esadecimali - Swift
- 30. Python - Lotto converte le posizioni GPS in decimali Lat Lon
qualche lingua specifica? – joseramonc
Cosa intendi? @JoseRamonCamacho? Converti .2002 (base10) a.? (Base 16) – Dusteh
come java, rubino, pitone? – joseramonc