formatting - 如何打印具有所有可用精度的 Rust float ?

我正在为 sin 三角函数实现 CORDIC 算法。为了做到这一点,我需要硬编码/计算一堆反正切值。现在我的函数 似乎 可以工作(由 Wolfram Alpha 验证)到打印的精度,但我希望能够打印我的 f32的所有 32 位精度。我该怎么做?

fn generate_table() {
    let pi: f32 = 3.1415926536897932384626;
    let k1: f32 = 0.6072529350088812561694; // 1/k
    let num_bits: uint = 32;
    let num_elms: uint = num_bits;
    let mul: uint = 1 << (num_bits - 2);

    println!("Cordic sin in rust");
    println!("num bits {}", num_bits);
    println!("pi is {}", pi);
    println!("k1 is {}", k1);

    let shift: f32 = 2.0;
    for ii in range(0, num_bits) {
        let ipow: f32 = 1.0 / shift.powi(ii as i32);
        let cur: f32 = ipow.atan();
        println!("table values {}", cur);
    }
}

最佳答案

使用 precision format specifier ;一个 . 后跟您希望看到的精度的小数点数:

fn main() {
    let pi: f32 = 3.1415926536897932384626;
    let k1: f32 = 0.6072529350088812561694; // 1/k

    println!("pi is {:.32}", pi);
    println!("k1 is {:.32}", k1);
}

我选择了 32,这比这两个 f32s 中的小数点数

pi is 3.14159274101257324218750000000000
k1 is 0.60725295543670654296875000000000

请注意,这些值不再匹配; floating point values are difficult !如评论中所述,您不妨 print as hexadecimal or even use your literals as hexadecimal .

关于formatting - 如何打印具有所有可用精度的 Rust float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576889/

相关文章:

php - mysql时间戳转换/格式化通知: A non well formed numeric

perl - 在 Perl 中获取 UTC 偏移量的最佳方法是什么?

iphone - 在Objective-C中将小数转换为分数?

java - 无法解析自定义日期格式。 ( java )

visual-studio-2008 - 如何添加法国商标符号 (MD)?

python - 如何在没有任何额外符号(方括号 [] 和元素之间的空格)的情况下打印 Numpy

java - RSS 2.0 提要中的 RFC-822 日期时间格式 : CET not accep

python - 格式化数字,使它们在小数点上对齐

python - 带有负索引的 str.format(list) 在 Python 中不起作用

git - Git 提交消息的推荐格式