Итак, я думал, как вы преобразовываете десятичную дробь в шестнадцатеричную дроби? Какие методы конвертирования и короткие сокращения?Как преобразовать десятичные дроби в шестнадцатеричные дроби?
ответ
Вы можете использовать этот алгоритм:
- Возьмите дробную часть числа (то есть целая часть равна нулю)
- УМНОЖАЕТ
- Преобразования целой часть в шестнадцатеричный и положить его вниз
- Перейти к шагу 1
например, давайте выясним шестнадцатеричное представление для пи = 3,141592653589793 ...
целая часть очевидна - 0x3; а для дробной части (+0,141592653589793) мы имеем
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); ...
So пи (шестнадцатеричное) = 3.243F6A ...
Возможная (C#) Реализация
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"
Вы можете получить дробную часть, умножив входной номер на целое число шестнадцатеричных цифр. Затем вы можете использовать регулярное целочисленное преобразование. Например, чтобы получить 6 символов после (шестнадцатеричной) десятичной точки, умножьте дробную часть на 0x1000000.
Вот код Java, который это сделает.
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);
}
Число разрядов будет ограничено наибольшим целым числом, которое вы можете представить в двойном размере.
Это должно работать и для других квадратных оснований, например. для восьмеричного изменения digits * 4
до digits * 3
, и использовать Long.toOctalString
.
- 1. Как исправить десятичные дроби?
- 2. Удалить нецифровой, не-десятичные, дроби
- 3. Как преобразовать двоичное число дроби в число десятичной дроби?
- 4. График счисления десятичной дроби
- 5. PYTHON - входной знак десятичной дроби
- 6. Реализация десятичной дроби, а не дроби, калькулятор Xcode App
- 7. как округлять числа и десятичные дроби в 1 функции
- 8. Преобразования десятичной дроби в
- 9. Преобразование десятичной дроби в Swift
- 10. Как представить дроби в python
- 11. Регулярные выражения (знаменатель дроби)
- 12. Как проверить формат десятичной дроби?
- 13. Как получить номер дроби (флоат)
- 14. Extract некоторые числа и десятичные дроби из строки
- 15. Регулярное выражение для получения числа и десятичные дроби
- 16. Преобразование десятичной дроби в разряд
- 17. Как преобразовать десятичную дробь в дроби, используя Python?
- 18. Получение числитель и знаменатель дроби в R
- 19. Как получить дроби в целочисленном делении?
- 20. Как работать с дроби в Javascript?
- 21. Как создать дроби в любом шрифте?
- 22. C++ Преобразование восьмеричной доли в десятичную дроби?
- 23. Excel не упрощает все дроби, как ожидалось
- 24. преобразовать шестнадцатеричные десятичные числа в десятичные с использованием python
- 25. Ввод десятичной дроби в Html, php, Javascript
- 26. Удалить цифры после десятичной дроби в Javascript
- 27. Рассчитать положительные дроби в объективе-c
- 28. JFormattedTextfield с любым числом цифр дроби
- 29. алгоритм для преобразования десятичных чисел дроби выражение
- 30. Как преобразовать шестнадцатеричные в десятичные в Pig Latin?
какой-либо специфический язык? – joseramonc
Что это значит? @JoseRamonCamacho? Convert .2002 (основа10) to.? (Основа16) – Dusteh
как java, ruby, python? – joseramonc