Create an arbitrary precision float number ([dashu_float::FBig]) with base 2 rounding towards zero.
This macro only accepts binary or hexadecimal literals. It doesn't allow decimal literals because
the conversion is not always lossless. Therefore if you want to create an [FBig][dashu_float::FBig]
instance with decimal literals, use the [dbig!] macro and then change the radix with
[with_base][dashu_float::FBig::with_base].
```rust
# use dashu_macros::fbig;
let a = fbig!(11.001); // digits in base 2, equal to 3.125 in decimal
let b = fbig!(1.101B-3); // exponent in base 2 can be specified using `Bxx`
let c = fbig!(-0x1a7f); // digits in base 16
let d = fbig!(0x03.efp-2); // equal to 0.9833984375 in decimal
// underscores can be used to separate digits
let e = fbig!(0xa54653ca_67376856_5b41f775.f00c1782_d6947d55p-33);
// Due to the limitation of Rust literal syntax, the hexadecimal literal
// with floating point requires an underscore prefix if the first digit is
// not a decimal digit.
let f = fbig!(-_0xae.1f);
let g = fbig!(-0xae1fp-8);
assert_eq!(f, g);
let h = fbig!(-0x12._34);
let i = fbig!(-_0x12.34);
assert_eq!(h, i);
```
The generated float has precision determined by length of digits in the input literal.
```rust
# use dashu_macros::fbig;
let a = fbig!(11.001); // 5 binary digits
assert_eq!(a.precision(), 5);
let b = fbig!(0x0003.ef00p-2); // 8 hexadecimal digits = 32 binary digits
assert_eq!(b.precision(), 32);
assert_eq!(b.digits(), 10); // 0x3ef only has 10 effective bits
```
For numbers that are small enough (significand fits in a [u32]),
the literal can be assigned to a constant.
```rust
# use dashu_macros::fbig;
use dashu_float::FBig;
const A: FBig = fbig!(-1001.10);
const B: FBig = fbig!(0x123);
const C: FBig = fbig!(-0xffff_ffffp-127);
```