gpt4 book ai didi

c - 在 C 中仅使用系统调用打印浮点值

转载 作者:太空宇宙 更新时间:2023-11-04 08:37:24 27 4
gpt4 key购买 nike

我正在尝试编写一个 C 程序来以人类可读的格式(即 KB、MB、GB 等)打印文件大小。输入是以字节为单位的文件大小。要注意的是,这将仅使用系统调用而不是库调用来完成。

我已经编写了一个将正整数转换为字符串的函数,然后使用 write() 系统调用将其打印出来。我不知道如何使用 write() 打印十进制值,因为转换后的文件大小(以 KB 或 MB 或 GB 为单位)可能是小数。(例如:4.0K、5.6G 等)。

此外,是否可以将精度限制为某个固定长度(比如 2 位小数)??

最佳答案

在很多情况下,您可以像处理整数一样转换 float 。首先通过将 float 转换为 int 并将其转换为字符串来转换整数部分。然后附加小数点,从原始 float 中减去整数,乘以所需的精度并执行相同操作(如果需要,使用前导零)。

从概念上讲,您可以这样做:

int integerPart = myFloat;
int decimalPart = (myFloat - integerPart) * 1000; // for three decimal places
char* stringRep = intToStringNoLeadingZeros(integerPart);
appendChar(stringRep, '.');
appendIntToStringWithLeadingZeros(stringRep, decimalPart);

不适用于大于最大可能整数的 float ,如果您需要很多小数位,它会失去精度。但对于常见情况,这是一种快速的方法。如果您希望它适用于所有情况,您将不得不编写直接解释浮点格式的代码,但我认为这需要做更多的工作。

关于c - 在 C 中仅使用系统调用打印浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643428/

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