ieee754_converter 1.0.0
ieee754_converter: ^1.0.0 copied to clipboard
A comprehensive Dart library for IEEE 754 floating-point representation conversion supporting 16-bit (half), 32-bit (single), 64-bit (double) precision formats and custom bit configurations.
example/example.dart
import 'package:ieee754_converter/ieee754_converter.dart';
void main() {
print('=== IEEE 754 Floating Point Converter Examples ===\n');
// Example 1: Single Precision Conversion
print('1. Single Precision (32-bit) Conversion');
print('-' * 50);
final single = IEEE754Single.fromDecimal(12.625);
print('Decimal: 12.625');
print('Sign: ${single.sign}');
print('Exponent (biased): ${single.exponent}');
print('Exponent (actual): ${single.actualExponent}');
print('Fraction: ${single.fraction}');
print('Binary: ${single.binaryFormatted}');
print('Hexadecimal: ${single.hexadecimal}');
print('Octal: ${single.octal}');
print('Back to Decimal: ${single.toDecimal()}\n');
// Example 2: Half Precision Conversion
print('2. Half Precision (16-bit) Conversion');
print('-' * 50);
final half = IEEE754Half.fromDecimal(12.625);
print('Decimal: 12.625');
print('Binary: ${half.binaryFormatted}');
print('Hexadecimal: ${half.hexadecimal}');
print('Back to Decimal: ${half.toDecimal()}\n');
// Example 3: Double Precision Conversion
print('3. Double Precision (64-bit) Conversion');
print('-' * 50);
final double_ = IEEE754Double.fromDecimal(12.625);
print('Decimal: 12.625');
print('Binary: ${double_.binaryFormatted}');
print('Hexadecimal: ${double_.hexadecimal}');
print('Back to Decimal: ${double_.toDecimal()}\n');
// Example 4: Special Values
print('4. Special Values');
print('-' * 50);
final zero = IEEE754Single.fromDecimal(0.0);
print('Zero: ${zero.binaryFormatted} (${zero.specialValueType})');
final infinity = IEEE754Single.fromDecimal(double.infinity);
print('Infinity: ${infinity.binaryFormatted} (${infinity.specialValueType})');
final nan = IEEE754Single.fromDecimal(double.nan);
print('NaN: ${nan.binaryFormatted} (${nan.specialValueType})\n');
// Example 5: Custom Format
print('5. Custom Format (24-bit)');
print('-' * 50);
final custom = IEEE754Custom(signBits: 1, exponentBits: 7, fractionBits: 16);
print('Format: $custom');
final customResult = custom.fromDecimal(12.625);
print('Binary: ${customResult.binaryFormatted}');
print('Back to Decimal: ${customResult.toDecimal()}\n');
// Example 6: Binary to Decimal
print('6. Binary to Decimal Conversion');
print('-' * 50);
final fromBinary = IEEE754Single.fromBinary(
'01000001010010100000000000000000',
);
print('Binary: 01000001010010100000000000000000');
print('Decimal: ${fromBinary.toDecimal()}\n');
// Example 7: Hexadecimal to Decimal
print('7. Hexadecimal to Decimal Conversion');
print('-' * 50);
final fromHex = IEEE754Single.fromHex('0x414A0000');
print('Hexadecimal: 0x414A0000');
print('Decimal: ${fromHex.toDecimal()}\n');
// Example 8: Precision Comparison
print('8. Precision Comparison');
print('-' * 50);
final value = 0.1;
final halfPrec = IEEE754Half.fromDecimal(value);
final singlePrec = IEEE754Single.fromDecimal(value);
final doublePrec = IEEE754Double.fromDecimal(value);
print('Original: $value');
print(
'Half (16-bit): ${halfPrec.toDecimal()} (error: ${(halfPrec.toDecimal() - value).abs()})',
);
print(
'Single (32-bit): ${singlePrec.toDecimal()} (error: ${(singlePrec.toDecimal() - value).abs()})',
);
print(
'Double (64-bit): ${doublePrec.toDecimal()} (error: ${(doublePrec.toDecimal() - value).abs()})',
);
}