分形/数学/数字
"Many questions concerning (discrete) dynamical systems are of a number theoretic or combinatorial nature." Christian Krattenthaler
- 每个程序员都应该知道的初级数论...由 CodeChef 提供
- Quora : 每个程序员都应该了解哪些重要的数论主题?
- science4all : 数字与可构造性
- 数论
- 计算机如何使用数字,由 Mabi19 提供
数字可以用作
- 数值计算中使用的数值
- 符号计算中使用的符号
- 十进制数(基数 = 10)[2]
- 二进制数(基数 = 2)[8]
- 二进制有理数(比率)
- 二进制实数
- 二进制浮点数(科学记数法)
- 原始二进制(原始 IEEE 格式)
- 二进制定点数(记号)
- 具有重复序列 :
- 具有无穷展开
- IEEE 浮点数
- 定点数
- John Gustafson 提出的通用数(unums)
- 有限 = 终止
- 无限 = 非终止
- 周期性 = 无限循环
- 前周期性 = 最终周期性
- 非周期性: 既不终止也不循环的二进制数字表示无理数
位值记数制中的基数或底数[14]
- 2 (二进制数)
- 8 (八进制数)
- 10 (十进制数)
- 16 (十六进制数)
记号[15]
- 数字和基数的序列
- 无限序列
- 一般形式用省略号 ( = 3 个点) 表示:
- 无限循环部分用
- 圆括号表示: .
- 上划线:
- 有限序列
- 1.23
- 带尾随零: 1.2300,用于指示有效数字的位数,例如在测量中。
- 带绝对测量误差: 均值 ± 范围 [16],例如: 72.20 ± 0.02
- 1.23
- 无限序列
- 整数的比率
- 最简形式(不可约形式) :
- 可约形式
- 显式规范形式 (仅当分母为奇数时):[17],例如:
- 角度分母公式的显式规范形式:
- 连分数:
- 科学 (指数) 形式或记号: [18]
计算机数字格式(存储形式)
- 浮点形式(扩展):数字的小数点可以“浮动”到数字的有效数字的左侧、右侧或之间。
- 定点格式
圆括号
[edit | edit source]带指数的括号(上标)表示该序列重复的次数[19]
尾随零
[edit | edit source]小数点右侧的尾随零,如 12.3400,不会影响数字的值,如果只关心数字的值,可以省略。即使零无限重复,也是如此。例如,在药学中,剂量值会省略尾随零,以防止误读。但是,尾随零可能有助于指示有效数字的数量,例如在测量中。在这种情况下,通过删除尾随零来“简化”数字将是不正确的。
非零 b 进制整数 n 中尾随零的数量等于 b 的最高次幂的指数,该次幂能整除 n。例如,14000 有三个尾随零,因此可被 1000 = 103 整除,但不能被 104 整除。此属性在寻找整数分解中的小因子时非常有用。一些计算机架构在它们的指令集中具有计数尾随零操作,可以高效地确定机器字中的尾随零位的数量。
二进制展开示例
[edit | edit source]首先检查比率是否是最简分数(可约)
二进制展开可以是
转换
[edit | edit source]转换之间
- 进制(从二进制到十进制,...)
- 形式(有理数到展开式,...)[20]
使用
算法
[edit | edit source]- 寻找
- 转换具有循环小数部分的数字
将分数约化为最简分数
[edit | edit source]可约分数可以通过将分子和分母除以公因子来约分。如果分子和分母都除以它们的最大公约数,则可以将其完全约化为最简分数
寻找最大公约数的算法
- 欧几里得算法
- 质因数分解
欧几里得算法通常是首选,因为它允许约分分子和分母过大而难以因式分解的分数
示例
将十进制分数转换为二进制
[edit | edit source]“...我们反复将十进制分数乘以 2。如果结果大于或等于 1,我们将 1 添加到答案中。如果结果小于 1,我们将 0 添加到答案中。”(来自弗吉尼亚理工大学在线 CS 模块[35])
算法:[36]
- 将输入的十进制分数乘以二
- 从以上结果
- 取整数部分作为二进制数字
- 取小数部分作为下一步的起点
- 重复,直到得到 0 或周期性数字
- 从上往下读取数字——第一个二进制数字是小数点后的第一个数字
将 0.1 十进制分数转换为二进制分数的示例
0.1 * 2 = 0.2 -> 0 0.2 * 2 = 0.4 -> 0 0.4 * 2 = 0.8 -> 0 0.8 * 2 = 1.6 -> 1 0.6 * 2 = 1.2 -> 1 0.2 * 2 = 0.4 -> 0 0.4 * 2 = 0.8 -> 0 0.8 * 2 = 1.6 -> 1 0.6 * 2 = 1.2 -> 1 0.2 * 2 = 0.4 -> 0 0.4 * 2 = 0.8 -> 0 0.8 * 2 = 1.6 -> 1 0.6 * 2 = 1.2 -> 1 0.2 * 2 = 0.4 -> 0
结果
循环分数:[37]
0.(567) = 567/999 = 189/333 = 63/111 0.(0011) = 0011 / 1111 =(in decimal) 3/15 = 1/5
代码
将二进制分数转换为十进制比率
[edit | edit source](前)周期性二进制小数可以拆分为两个小数
- 有限的
- 无限:周期性,前周期部分为空或全部为零
当 |r|<1 时,等比数列的公式:[38]
对于前周期部分为空或全部为零的无限周期二进制小数,该公式为[39]
其中
- b 是二进制数字 : 0 或 1
- t 是前周期块的长度
- p 是周期块的长度
- a 的值只是重复块第一次出现的数值
- 因此
完整公式 现在为
示例
代码示例
[edit | edit source]bc
[edit | edit source]使用 bc – arbitrary–precision arithmetic language 将十进制比率转换为二进制[40]
bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. obase=2 3/14 .0011011011011011011011011011011011011011011011011011011011011011010 1/5 .0011001100110011001100110011001100110011001100110011001100110011001
C
[edit | edit source]- itoa
- snprintf[41]
- 二进制整数常量
- 宏 BOOST_BINARY
- gmp
- Claude Heiland-Allen 的 mandelbrot-symbolics 库
- Wojciech Muła 的数字转换为二进制表示
itoa
[edit | edit source]itoa 函数[42]
/*
itoa example
http://www.cplusplus.com/reference/cstdlib/itoa/
*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}
二进制整数常量
[edit | edit source]二进制整数常量[43]
"整数常量可以写成二进制常量,由 '0' 和 '1' 数字序列组成,以 '0b' 或 '0B' 为前缀。这在对位级操作(如微控制器)进行大量操作的环境中特别有用。
以下语句是相同的
i = 42;
i = 0x2a;
i = 052;
i = 0b101010;
这些常量的类型遵循与八进制或十六进制整数常量相同的规则,因此可以应用像 'L' 或 'UL' 这样的后缀。"
gmp
[edit | edit source]GMP 库[44]
/*
C programme using gmp
gcc r.c -lgmp -Wall
http://gmplib.org/manual/Rational-Number-Functions.html#Rational-Number-Functions
*/
#include <stdio.h>
#include <gmp.h>
int main ()
{
// input = binary fraction as a string
char *sbr = "01001010010010100101001001010010010100101001001010010100100101001001010010100100101001010/11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
mpq_t q; // rational number;
int b =2 ; // base of numeral system
mpz_t n ;
mpz_t d ;
mpf_t f;
// init and set variables
mpq_init (q); // Initialize r and set it to 0/1.
mpq_set_str (q, sbr , b);
mpq_canonicalize (q); // It is the responsibility of the user to canonicalize the assigned variable before any arithmetic operations are performed on that variable.
mpq_canonicalize (q); // It is the responsibility of the user to canonicalize the assigned variable before any arithmetic operations are performed on that variable.
// n , d
mpz_inits(n,d,NULL);
mpq_get_num(n,q);
mpq_get_den(d, q);
//
mpf_init2(f, 100); // http://stackoverflow.com/questions/12804362/gmp-division-precision-or-printing-issue
mpf_set_q(f,q); // There is no rounding, this conversion is exact.
// print
gmp_printf ("decimal fraction = %Zd / %Zd \ndecimal canonical form = %Qd\n",n,d, q); //
gmp_printf ("binary fraction = %s \n", sbr); //
gmp_printf ("decimal floating point number : %.30Ff \n", f); //
// clear memory
mpq_clear (q);
mpz_clear (n);
mpz_clear (d);
mpf_clear (f);
return 0;
}
输出
decimal fraction = 179622968672387565806504266 / 618970019642690137449562111 decimal canonical form = 179622968672387565806504266/618970019642690137449562111 binary fraction = 01001010010010100101001001010010010100101001001010010100100101001001010010100100101001010/11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 decimal floating point number : 0.290196557138708685358212602171
Haskell
[edit | edit source]Claude Heiland-Allen 的代码:[45]
-- http://mathr.co.uk/blog/2014-10-13_converting_fractions_to_strings_of_digits.html
import Data.Fixed (mod')
import Data.List (nub)
import Data.Ratio ((%), denominator)
import Data.Numbers.Primes (primeFactors)
import System.Environment (getArgs)
data Digits = Digits
{ dNegative :: Bool
, dInteger
, dPreperiodic
, dPeriodic :: [Int]
} deriving Show
preperiod :: Digits -> Int
preperiod = length . dPreperiodic
period :: Digits -> Int
period = length . dPeriodic
digitsAtBase :: Int -> Rational -> Digits
digitsAtBase base rational
= Digits
{ dNegative = rational < 0
, dInteger = int
, dPreperiodic = pre
, dPeriodic = per
}
where
integer :: Integer
fraction :: Rational
(integer, fraction) = properFraction (abs rational)
int | integer == 0 = [0]
| otherwise = goInt integer []
goInt i ds
| i == 0 = ds
| otherwise = goInt i' (fromInteger d : ds)
where
(i', d) = i `divMod` baseZ
factors :: [Integer]
factors = map fromIntegral . nub . primeFactors $ base
isPreperiodic :: Rational -> Bool
isPreperiodic x = any (`divides` denominator x) factors
baseZ :: Integer
baseZ = fromIntegral base
baseQ :: Rational
baseQ = fromIntegral base
(pre, per) = goPre fraction
where
goPre :: Rational -> ([Int], [Int])
goPre x
| isPreperiodic x = first (d:) (goPre x')
| otherwise = ([], d : goPer x x')
where (d, x') = properFraction (baseQ * x)
goPer :: Rational -> Rational -> [Int]
goPer x0 x
| x0 == x = []
| otherwise = d : goPer x0 x'
where (d, x') = properFraction (baseQ * x)
first :: (a -> c) -> (a, b) -> (c, b)
first f (a, b) = (f a, b)
divides :: Integer -> Integer -> Bool
factor `divides` number = number `mod` factor == 0
digitsToString :: [String] -> Digits -> String
digitsToString digits Digits
{ dNegative = sign
, dInteger = int
, dPreperiodic = pre
, dPeriodic = per
}
= (if sign then "-" else "")
++ d int ++ "." ++ d pre ++ "(" ++ d per ++ ")"
where
d = concatMap (digits !!)
atBase :: Int -> Rational -> String
atBase base rational = digitsToString ds (digitsAtBase base rational)
where
ds | base <= 62 = map (:[]) $ ['0'..'9'] ++ ['A'..'Z'] ++ ['a'..'z']
| otherwise = [ "<" ++ show d ++ ">" | d <- [0 .. base - 1] ]
main :: IO ()
main = do
[sbase, sfraction] <- getArgs
let (snum, _:sden) = break ('/' ==) sfraction
base = read sbase
num = read snum
den = read sden
rational = num % den
putStrLn (atBase base rational)
Python
[edit | edit source]# https://wiki.python.org/moin/BitManipulation
# binary string to integer
>>> int('00100001', 2)
33
# conversion from binary string to hex string
>>> print "0x%x" % int('11111111', 2)
0xff
>>> print "0x%x" % int('0110110110', 2)
0x1b6
>>> print "0x%x" % int('0010101110101100111010101101010111110101010101', 2)
0xaeb3ab57d55
其他方法[46]
如何在计算机程序中使用数字?
[edit | edit source]首先阅读
- 文章 “What Every Computer Scientist Should Know About Floating-Point Arithmetic” 由 DAVID GOLDBERG 撰写:[47]
- Josh HabermanFloating Point Demystified, Part 1 由
- floating-point-demystified-part2
整数
[edit | edit source]- 类型
- 限制和溢出
限制
[edit | edit source]/*
gcc l.c -lm -Wall
./a.out
http://stackoverflow.com/questions/29592898/do-long-long-and-long-have-same-range-in-c-in-64-bit-machine
*/
#include <stdio.h>
#include <math.h> // M_PI; needs -lm also
#include <limits.h> // INT_MAX, http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html
int main(){
double lMax;
lMax = log2(INT_MAX);
printf("INT_MAX \t= %25d ; lMax = log2(INT_MAX) \t= %.0f \n",INT_MAX, lMax);
lMax = log2(UINT_MAX);
printf("UINT_MAX \t= %25u ; lMax = log2(UINT_MAX) \t= %.0f \n", UINT_MAX, lMax);
lMax = log2(LONG_MAX);
printf("LONG_MAX \t= %25ld ; lMax = log2(LONG_MAX) \t= %.0f \n",LONG_MAX, lMax);
lMax = log2(ULONG_MAX);
printf("ULONG_MAX \t= %25lu ; lMax = log2(ULONG_MAX) \t= %.0f \n",ULONG_MAX, lMax);
lMax = log2(LLONG_MAX);
printf("LLONG_MAX \t= %25lld ; lMax = log2(LLONG_MAX) \t= %.0f \n",LLONG_MAX, lMax);
lMax = log2(ULLONG_MAX);
printf("ULLONG_MAX \t= %25llu ; lMax = log2(ULLONG_MAX) \t= %.0f \n",ULLONG_MAX, lMax);
return 0;
}
结果
INT_MAX = 2147483647 ; lMax = log2(INT_MAX) = 31 UINT_MAX = 4294967295 ; lMax = log2(UINT_MAX) = 32 LONG_MAX = 9223372036854775807 ; lMax = log2(LONG_MAX) = 63 ULONG_MAX = 18446744073709551615 ; lMax = log2(ULONG_MAX) = 64 LLONG_MAX = 9223372036854775807 ; lMax = log2(LLONG_MAX) = 63 ULLONG_MAX = 18446744073709551615 ; lMax = log2(ULLONG_MAX) = 64
例如,Wolf Jung 在 程序 Mandel 中进行了一个静默边界检查:[48]
// mndynamo.h by Wolf Jung (C) 2007-2014
typedef unsigned long long int qulonglong;
// mndcombi.cpp by Wolf Jung (C) 2007-2014
qulonglong mndAngle::wake(int k, int r, qulonglong &n)
{ if (k <= 0 || k >= r || r > 64) return 0LL;
如果 r 对无符号长长整型太大,则返回 0 以防止整数溢出。
GMP 库具有任意精度的有理数。
浮点数
[edit | edit source]精度
[edit | edit source]- GMP:每个浮点数的尾数具有用户可选择的精度(变量 prec 类型 mp_bitcnt_t)。多精度数字的位数在 C 类型 mp_bitcnt_t 中表示。目前这始终是一个无符号长整型
- MPFR:精度是用于表示浮点数尾数(尾数)的位数;相应的 C 数据类型是 mpfr_prec_t。
"任何具有有限小数展开式的数字都是有理数。"换句话说:"任何浮点数都可以转换为有理数。" [49]
因此,在数值计算中,人们可以使用整数或浮点数(有理数)。
在 C 中,可以使用
- 位运算符 [50]
在 Maxima CAS 中,可以使用
(%i1) ibase; (%o1) 10 (%i2) obase; (%o2) 10 (%i3) ibase:2; (%o3) 2 (%i4) x=1001110; (%o4) x=78
使用 **Haskell**(ghci)计算二进制数,并将二进制数表示为包含重复部分的字符串。
-- by Claude Heiland-Allen
-- http://mathr.co.uk/blog/haskell.html
Prelude> let rep n s = concat (replicate n s)
Prelude> putStrLn $ ".(" ++ rep 88 "001" ++ "010)"
.(001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001010)
putStrLn $ ".(" ++ rep 87 "001" ++ "010001)"
.(001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001010001)
Prelude> putStrLn $ ".(" ++ rep 88 "001" ++ "0001)"
.(0010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010001)
Prelude> putStrLn $ ".(" ++ rep 88 "001" ++ "0010)"
.(0010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010)
在 **Python** 中
>>> bin(173)
'0b10101101'
>>> int('01010101111',2)
687
在 Python 中,可以使用二进制字面量:[51]
python
Python 2.7.5+ (default, Feb 27 2014, 19:37:08)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0b101111
47
The problem is that we are exploring environments based upon irrational numbers through computer machinery which works with finite rationals ! ( Alessandro Rosa )
展开式不终止且不循环
类型
- 代数数 = 代数方程的根。例如:sqrt(2),
- 超越数 = 非代数数
如果要使用无理数,则应检查
最无理的数字[54] 在连分数中,所有数字都为 1,表示所有无理数中最慢的收敛速度。
使用 Maxima CAS
(%i10) print(float(%phi-1)); (%o10).6180339887498949 (%i11) rationalize(float(%phi-1)); (%o11) 347922205179541/562949953421312
和
(%i14) print(float(1/%phi)); (%o14) .6180339887498948 (%i15) rationalize(float(1/%phi)); (%o15) 5566755282872655/9007199254740992
其中分母
示例
- VBA [57]
- Maxima CAS
请注意,在具有有限精度的数值计算中(在计算机上)
- 如果数字表示为比率(整数),则它是有理数。
- 如果数字具有浮点表示形式,那么它也是有理数,因为有限的精度等于有限的展开式。
/* Maxima CAS batch file */ remvalue(all); kill(all); /* input = ratio, which automatically changed to lowest terms by Maxima CAS output = string describing a type of decimal expansion --------------------------------------------------------------------------------- " The rules that determine whether a fraction has recurring decimals or not are really quite simple. 1. First represent the fraction in its simplest form, by dividing both numerator and denominator by common factors. 2. Now, look at the denominator. 3. 3.1 If the prime factorization of the denominator contains only the factors 2 and 5, then the decimal fraction of that fraction will not have recurring digits. In other words : Terminating decimals represent rational numbers of the form k/(2^n*5^m) 3.2 A fraction in lowest terms with a prime denominator other than 2 or 5 (i.e. coprime to 10) always produces a repeating decimal. 3.2.1 If the prime factorization yields factors like 3, 7, 11 or other primes (other than 2 and 5), then that fraction will have a decimal representation that includes recurring digits. 3.2.2 Moreover, if the denominator's prime factors include 2 and/or 5 in addition to other prime factors like 3, 7, etc., the decimal representation of the fraction will start with a few non-recurring decimals before the recurring part." http://blogannath.blogspot.com/2010/04/vedic-mathematics-lesson-49-recurring.html check : http://www.knowledgedoor.com/2/calculators/convert_a_ratio_of_integers.html wikipedia: Repeating_decimal " A fraction in lowest terms with a prime denominator other than 2 or 5 (i.e. coprime to 10) always produces a repeating decimal. The length of the repetend (period of the repeating decimal) of 1/p is equal to the order of 10 modulo p. If 10 is a primitive root modulo p, the repetend length is equal to p − 1; if not, the repetend length is a factor of p − 1. This result can be deduced from Fermat's little theorem, which states that 10p−1 = 1 (mod p)." --------------------------------------------------------------------------------------- */ GiveRatioType(ratio):= block ( [denominator:denom(ratio), FactorsList , Factor, Has25:false, HasAlsoOtherPrimes:false, type ], /* type of decimal expansion of the ratio of integers */ /* compute list of prime factors ofd denominator */ FactorsList:ifactors(denominator), FactorsList:map(first,FactorsList), print(denominator, FactorsList), /* check factors type : only 2 or 5 also other primes then 2 or 5 */ if (member(2,FactorsList) or member(5,FactorsList)) then Has25:true, for Factor in FactorsList do if (not member(Factor,[2,5])) then HasAlsoOtherPrimes:true, print(Has25, HasAlsoOtherPrimes), /* find type of decimal expansion */ if (not Has25 and HasAlsoOtherPrimes) then type:"periodic", if (Has25 and HasAlsoOtherPrimes) then type:"preperiodic", if (Has25 and not HasAlsoOtherPrimes) then type:"finite", return(type) )$ compile(all)$ /* input numbers*/ a:1 $ b:3 $ r:a/b$ type : GiveRatioType(r);
- dumpfp:一个用于检查浮点数的工具,作者:Joshua Haberman [58]
- float.exposed - 和 Bartosz Ciechanowski 的博客
在数学(理论)中
- "... 有理数是可数集,而无理数是不可数集。换句话说,无理数比有理数更多。" [59]
- "... 在实数集中,存在无理数的连续统和只有 aleph-zero 有理数。因此,任何随机数是无理数的概率为 1;"(Bartek Ogryczak) [60] "为了精确起见,你应该说几乎肯定为 1。"– David Hammen
"a “height function” is some real-valued function that defines the “arithmetic complexity” of a point ... " Brian Lawrence[61]
在有理数集上定义的高度函数的类型
其中
- p/q 是最简形式的有理数
"How complicated is a rational number? Its size is not a very good indicator for this. For instance, 1987985792837/1987985792836 is approximately 1, but so much more complicated than 1. We'll explain how to measure the complexity of a rational number using various notions of height. We'll then see how heights are used to prove some basic finiteness theorems in number theory. One example will be the Mordell-Weil theorem: that on any rational elliptic curve, the group of rational points is finitely generated. " Alina Bucur (UCSD): Size Doesn't Matter: Heights in Number Theory
关键词
- 数域
- 数论中的高度函数
- 划分函数 : "划分数的行为类似于分形,具有无限重复的结构" [64]
任何随机数的概率
- 是无理数几乎为 1(理论上,因为基数)
- 是有理数为 1(数值计算中,因为精度有限)
- 概括 : 标量 / 向量 / 张量
- 字段 : 标量 , 向量, 张量
- ↑ 探索二进制:九种显示浮点数的方式
- ↑ 维基百科 : 数制
- ↑ math.stackexchange 问题:是否存在既不是有理数又不是无理数的实数
- ↑ 如何使用一维二次映射 G. Pastor , M. Romera, G. Álvarez, and F. Montoya
- ↑ 每个程序员都应该知道的浮点数运算
- ↑ Stackoverflow : 为什么浮点数不精确?
- ↑ 家庭学校数学 : 迷人的无理数
- ↑ 教程:Kip Irvine 的浮点二进制
- ↑ 对偶数 & 自动微分
- ↑ 视频:虚数是实数,来自 Welch Labs
- ↑ math stackexchange 问题:是否存在数字的第三维
- ↑ 在浮点数的游戏中获胜:John L. Gustafson , Isaac Yonemoto 的 Posit 算术
- ↑ fractalforums.org : posits
- ↑ 维基百科:基数
- ↑ 浮点格式调查 Robert Munafo 在 AWS 上的网页 © 1996-2022 Robert P. Munafo.
- ↑ 物理 132 实验手册:如何使用有效数字编写数字,作者:Brokk Toggerson 和 Aidan Philbin
- ↑ 如何使用一维二次映射 G. Pastor , M. Romera, G. Álvarez, and F. Montoya
- ↑ calculatorsoup:科学记数法转换器
- ↑ 一种解决 Mandelbrot 集外部射线绘制中限制的方法 M. Romera,1 G. Pastor, A. B. Orue,1 A. Martin, M.-F. Danca,and F. Montoya
- ↑ 将分数转换为数字字符串,作者:Claude Heiland-Allen
- ↑ 从其小数展开式识别有理数,作者:William Stein
- ↑ basic-mathematics : 将循环小数转换为分数
- ↑ 有理数的循环小数,作者:Yurii Lahodiuk
- ↑ Quora : 如何将循环分数转换为不同的基数
- ↑ knowledgedoor 计算器:convert_a_ratio_of_integers
- ↑ R.Knott : 分数 - 小数计算器
- ↑ 基数 - 十进制数转换
- ↑ 十进制到浮点转换器,作者:Rick Regan
- ↑ wolframalpha 二进制到十进制转换
- ↑ stackoverflow 问题 : 查找重复模式的最佳算法
- ↑ stackoverflow 问题 : 除了正则表达式之外,在字符串中查找重复模式的方法?noredirect=1&lq=1
- ↑ stackoverflow 问题:在字符串中查找重复模式
- ↑ stackoverflow 问题:在二进制字符串中查找模式
- ↑ Jan Turoń 的 jsfiddle
- ↑ 弗吉尼亚理工大学在线 CS 模块
- ↑ Stackoverflow : 如何将分数转换为二进制?
- ↑ 将循环二进制数转换为十进制(用级数表示?)
- ↑ 维基百科:几何级数
- ↑ stackoverflow 问题:将重复的二进制数转换为十进制数,用级数表示
- ↑ math.stackexchange 问题:给定重复的二进制展开式,求分数
- ↑ Linux 中的 itoa 函数在哪里?
- ↑ Stuart 编写的 GCC 中的 itoa
- ↑ gcc - 二进制常量
- ↑ Programowanie_w_systemie_UNIX:波兰维基百科中的 GMP
- ↑ Claude Heiland-Allen 编写的将分数转换为数字字符串
- ↑ stackoverflow:python 整数转换为二进制
- ↑ 每个计算机科学家都应该了解的浮点运算,作者 DAVID GOLDBERG
- ↑ wikipedia:边界检查
- ↑ stackoverflow 问题:检查 python 中的数字是否为有理数
- ↑ Joe McCullough:位运算符
- ↑ Stackoverflow:如何在 Python 中表示二进制字面量?
- ↑ John D Cook:最佳有理数逼近
- ↑ 发现有理数何时是无理数的最佳逼近,作者 KARI LOCK
- ↑ ams:最无理的数
- ↑ 复杂的美丽:数学日历
- ↑ David Bau:复函数查看器
- ↑ VBA 中的复数,作者 Pfadintegral
- ↑ dumpfp:用于检查浮点数的工具,作者 Joshua Haberman
- ↑ 家庭学校数学:迷人的无理数
- ↑ stackoverflow 问题:无理数检查函数
- ↑ 高度简介,作者 Brian Lawrence
- ↑ sagemath:Rational.global_height
- ↑ 高度函数,作者 Michael Tepper
- ↑ 分区函数的分形结构。