Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过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