Numerical Representations¶
- cdd.get_number_type_from_value(value)¶
Determine number type from a value.
- cdd.get_number_type_from_sequences(*data)¶
Determine number type from sequences.
- class cdd.NumberTypeable(number_type='float')¶
Base class for any class which admits different numerical representations.
- Parameters:
number_type (
str
) – The number type ('float'
or'fraction'
).
- NumberTypeable.make_number(value)¶
Convert value into a number.
- Parameters:
- Returns:
The converted value.
- Return type:
>>> nt = cdd.NumberTypeable('float') >>> print(repr(nt.make_number('2/3'))) 0.666666666... >>> nt = cdd.NumberTypeable('fraction') >>> print(repr(nt.make_number('2/3'))) Fraction(2, 3)
- NumberTypeable.number_str(value)¶
Convert value into a string.
- Parameters:
value (
NumberType
) – The value.- Returns:
A string for the value.
- Return type:
>>> numbers = ['4', '2/3', '1.6', '-9/6', 1.12] >>> nt = cdd.NumberTypeable('float') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_str(x)) 4.0 0.666666666... 1.6 -1.5 1.12 >>> nt = cdd.NumberTypeable('fraction') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_str(x)) 4 2/3 8/5 -3/2 1261007895663739/1125899906842624
- NumberTypeable.number_repr(value)¶
Return representation string for value.
- Parameters:
value (
NumberType
) – The value.- Returns:
A string for the value.
- Return type:
>>> numbers = ['4', '2/3', '1.6', '-9/6', 1.12] >>> nt = cdd.NumberTypeable('float') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_repr(x)) 4.0 0.666666666... 1.6... -1.5 1.12... >>> nt = cdd.NumberTypeable('fraction') >>> for number in numbers: ... x = nt.make_number(number) ... print(nt.number_repr(x)) 4 '2/3' '8/5' '-3/2' '1261007895663739/1125899906842624'
- NumberTypeable.number_cmp(num1, num2=None)¶
Compare values. Type checking may not be performed, for speed. If num2 is not specified, then num1 is compared against zero.
- Parameters:
num1 (
NumberType
) – First value.num2 (
NumberType
) – Second value.
>>> a = cdd.NumberTypeable('float') >>> a.number_cmp(0.0, 5.0) -1 >>> a.number_cmp(5.0, 0.0) 1 >>> a.number_cmp(5.0, 5.0) 0 >>> a.number_cmp(1e-30) 0 >>> a = cdd.NumberTypeable('fraction') >>> a.number_cmp(0, 1) -1 >>> a.number_cmp(1, 0) 1 >>> a.number_cmp(0, 0) 0 >>> a.number_cmp(a.make_number(1e-30)) 1
- NumberTypeable.number_type¶
The number type as string (
'float'
or'fraction'
).