gpt4 book ai didi

c - c语言小数点右移

转载 作者:太空狗 更新时间:2023-10-29 14:53:16 29 4
gpt4 key购买 nike

我是 C 的新手,当我运行下面的代码时,输​​出的值是 12098 而不是 12099。

我知道使用小数总是会有一定程度的不准确,但是有没有办法每次都将小数点准确地移动到正确的两位?

#include <stdio.h>

int main(void)
{
int i;
float f = 120.99;

i = f * 100;
printf("%d", i);
}

最佳答案

使用round函数

float f = 120.99;
int i = round( f * 100.0 );

但是请注意,float 通常只有 6 或 7 位精度,因此有一个最大值可以使用。无法正确转换的最小 float 值是数字 131072.01。如果乘以 100 并四舍五入,结果将为 13107202

您可以使用 double 值来扩展数字的范围,但即使是 double 也有一定的范围限制。 (double 具有 16 或 17 位精度。)例如,以下代码将打印 10000000000000098

double d = 100000000000000.99;
uint64_t j = round( d * 100.0 );
printf( "%llu\n", j );

这只是一个例子,找到最小的数字是超过 double 的精度留给读者作为练习。

关于c - c语言小数点右移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28327922/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com