Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
2年前关闭。
我需要舍入一些存储为浮点数的数字。
值如下:0.000000123,例如代表123ns
我需要提取123(以便可以用ns表示)并将其舍入到下一个“十”。
因此,例如,我想吸引注意力:130e-9
你有什么建议吗?
(这假设您有可用的c99 ceil,如果没有看到here的实现)
然后,如果要将其输出为字符串,则只需要转换“ val10ns”并附加“ 0ns”,就像这样
最后,您可能需要做一些处理小的值的事情。例如,1e-90秒仍将取整10ns。例如,您可以先舍入为零以获得ns的单位,然后再进行一次ceil以获得10ns的单位。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
2年前关闭。
我需要舍入一些存储为浮点数的数字。
值如下:0.000000123,例如代表123ns
我需要提取123(以便可以用ns表示)并将其舍入到下一个“十”。
因此,例如,我想吸引注意力:130e-9
你有什么建议吗?
最佳答案
有几种方法可以执行rounding,但这听起来像是您希望向上取整(朝+ infinity取整),也称为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中的浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45167161/
10-11 18:15