gpt4 book ai didi

c - 显示一些小数位 C

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:51 25 4
gpt4 key购买 nike

我正在为类编写一个简单的程序。我已经完成了,不用担心,我不会要求任何人做我的作业。让我用一个例子来解释我想要什么。

我的程序要求输入一定数量的位并将其转换为 mb、kb 和字节。所以,如果我输入 1 位,输出是:

1 in megabytes is: 0.000000119209290
1 in kilobytes is: 0.000122070312500
1 in bytes is: 0.125000000000000
1 in bits is: 1

所以,我的问题只是一个审美问题:我怎么能不显示不必要的小数位呢?例如,在字节中,我只想打印 0.125而不是 15 位小数,这一点也不漂亮。

源代码是:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{

unsigned long long int bits;

printf("Input a quantity of bits: \n");
scanf("%lld", &bits);

/*
* 1 byte = 8 bits.
* 1 kilobyte = 1024 bytes.
* 1 megabyte = 1024 kilobytes.
*/
long double by = ((double) bits) / ((double) 8);
long double kb = ((double) by) / ((double) 1024);
long double mb = ((double) kb) / ((double) 1024);

printf("%lld in megabytes is: %.15Lf\n", bits, mb);
printf("%lld in kilobytes is: %.15Lf\n", bits, kb);
printf("%lld in bytes is: %.15Lf\n", bits, by);
printf("%lld in bits is: %lld\n", bits, bits);

return(0);
}

PS:我知道我在 printf 中指定了小数点后 15 位,我只是在尝试这是我输出值的最佳方式。

提前致谢!

最佳答案

使用 g 说明符,像这样:

printf("%lld in megabytes is: %.15Lg\n", bits, mb);
printf("%lld in kilobytes is: %.15Lg\n", bits, kb);
printf("%lld in bytes is: %.15Lg\n", bits, by);
printf("%lld in bits is: %lld\n", bits, bits);

但是,如果需要,这将使用科学记数法。您可以添加这样的 if 语句:

if(fmod(mb, 10) == mb // last digit is not zero
&& mb < 0.000001) // if mb is a small number (the left value may need tuning)
printf("%lld in megabytes is: %.15Lf\n", bits, mb);
else
printf("%lld in megabytes is: %.15Lg\n", bits, mb);

相关答案是 this .另请注意,我必须使用 fmod()(在 math.h 下),因为 mb 不是整数。

关于c - 显示一些小数位 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085480/

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