gpt4 book ai didi

c - C 中的四舍五入 float

转载 作者:行者123 更新时间:2023-11-30 21:19:55 25 4
gpt4 key购买 nike

我需要对一些存储为 float 的数字进行舍入。

值类似于:0.000000123,例如代表 123ns

我需要提取 123(以便可以用 ns 表示)并将其舍入到下一个“十”。

所以,例如我想提取:130e-9

你有什么建议吗?

最佳答案

有几种方法可以做到rounding ,但听起来您想要向上舍入(向+无穷大舍入),也称为 ceil

由于您的单位是秒,并且您想要获得 10ns 的单位,因此您需要除以 10ns(1e-8,与乘以 1e8 相同),然后使用 ceil 函数。例如

double val = 123e-9;
int val10ns = ceil(val*1e8);

(这假设您有可用的 c99 ceil,如果没有,请参阅 here 实现)

如果你想将其输出为字符串,你只需要转换'val10ns'并附加“0ns”,就像这样

printf("val in units of 10ns: %d0ns\n", val10ns);

最后,您可能想要采取一些措施来处理小值。例如,1e-90 秒仍将四舍五入为 10ns。例如,您可以首先进行舍入到零以获得 ns 单位,然后进行 ceil 以获得 10ns 单位。

关于c - C 中的四舍五入 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167161/

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