Expand description

ToSci, a trait for converting a number to string, possibly using scientific notation.

to_sci

use malachite_base::num::conversion::traits::ToSci;

// If the value can fit in a `u32`, the result is the same as with `to_string`
assert_eq!(123u8.to_sci().to_string(), "123");

assert_eq!(u128::MAX.to_sci().to_string(), "3.402823669209385e38");
assert_eq!(i128::MIN.to_sci().to_string(), "-1.701411834604692e38");

to_sci_with_options

use malachite_base::num::conversion::string::options::ToSciOptions;
use malachite_base::num::conversion::traits::ToSci;
use malachite_base::rounding_modes::RoundingMode;

let mut options = ToSciOptions::default();
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "123456");

options.set_precision(3);
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "1.23e5");

options.set_rounding_mode(RoundingMode::Ceiling);
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "1.24e5");

options.set_e_uppercase();
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "1.24E5");

options.set_force_exponent_plus_sign(true);
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "1.24E+5");

options = ToSciOptions::default();
options.set_base(36);
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "2n9c");

options.set_uppercase();
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "2N9C");

options.set_base(2);
options.set_precision(10);
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "1.1110001e16");

options.set_include_trailing_zeros(true);
assert_eq!(123456u32.to_sci_with_options(options).to_string(), "1.111000100e16");

fmt_sci_valid

use malachite_base::num::conversion::string::options::ToSciOptions;
use malachite_base::num::conversion::traits::ToSci;
use malachite_base::rounding_modes::RoundingMode;

let mut options = ToSciOptions::default();
assert!(123u8.fmt_sci_valid(options));
assert!(u128::MAX.fmt_sci_valid(options));
options.set_rounding_mode(RoundingMode::Exact);
assert!(!u128::MAX.fmt_sci_valid(options)); // u128::MAX has more than 16 significant digits
options.set_precision(50);
assert!(u128::MAX.fmt_sci_valid(options));

Structs

A struct that can be used to format a number in scientific notation.