当我执行除法操作时会出现问题。我想知道是谁给截断了一些带有小数点为整数,如2,4,67如何将小数点的数字截断为int?这有什么功能?
回答
它会自动截断是分配价值为“int”变量:
int c;
c = a/b;
或者你可以施放这样的:
c = (int) (a/b);
这截断它,即使c定义为float或double。
通常截断不是最好的(取决于你想要达到的目标)。通常结果是这样取整的:
c= round(a/b,0);
更聪明,因为正确结果。如果你使用linux,你可以很容易地获得有关确切数据类型的“man round”的参考信息。
非常感谢。我会尝试一轮()和演员。 –
如果这回答你的问题,你可以把它标记为“接受”:) –
在'c =(int)a/b;'中,这个转换适用于'a',而不是'a/b'。如果你想转换'a/b',你需要括号:'c =(int)(a/b);'。 –
手动或隐式地从浮点类型转换为整型会导致向零自动截断。请记住,如果积分类型不足以存储该值,则会发生溢出。如果你只需要打印带有一切都会过去的小数点截断值,使用printf()
:
printf("%.0f", floor(float_val));
随着托纳·塞缪尔指出,这printf()
调用实际上将全面默认浮点参数。
这个%.0f不是截断的,而是我知道的圆整。 –
@TõnuSamuel,你是对的,我会修改我的答案。 –
使用'trunc()'截断更有意义的是'floor()'。使用'truncf()'对于'float float_val'甚至更有意义。 – chux
int result = (int)ceilf(myFloat);
int result = (int)roundf(myFloat);
int result = (int)floor(myFloat);
float result = ceilf(myFloat);
float result = roundf(myFloat);
float result = floor(myFloat);
我认为这会对您有所帮助。
由于OP询问“如何截断数字...”,我建议添加'truncf()'。 – chux
您可以使用math.h
中定义的trunc()
函数。它将删除小数部分,并返回不大于给定数字的最近整数。
这是它是如何定义的:
double trunc(double x);
下面是你如何使用它:
double a = 18.67;
double b = 3.8;
int c = trunc(a/b);
您可以检查在Linux上man trunc
,以获取有关该功能的详细信息。正如在前面的答案中指出的那样,你可以将除法结果转换为整数,或者如果分配给整数,它将自动截断,但如果你有兴趣了解一个C作用,那么作业就是trunc()
。
- 1. 为什么隐式转换为int转换和截断小数?
- 2. DataSet将小数点截断为2位
- 3. 如何截断浮点数到一个int或不小数位
- 4. 如何截断小数前的数字?
- 5. 如何截断小数点后的值
- 6. 如何在ColdFusion中将数字截断为2个小数位?
- 7. 地板功能和截断功能有什么区别?
- 8. 将数字截断为指定的小数位
- 9. 将小数截断为指定位置
- 10. C#/。NET:为什么我不能将这个小数转换为int?
- 11. 为什么我不能将int作为小数来取代?
- 12. 为什么`stats.mode()`函数截断字符串数组的答案?
- 13. 为什么POST数据被PHP截断?
- 14. 为什么这个功能不输出小数
- 15. 将文件截断为字节大小
- 16. 为什么这些函数会截断返回值?
- 17. 为什么在这里不会发生整数除法截断?
- 18. 为什么Sympy使用小系数截断多项式项?
- 19. 为什么Firebird在分割时会截断小数位?
- 20. 为什么coldfusion将这些值输出为浮点小数?
- 21. INT字段 - 字符串或二进制数据将被截断
- 22. 为什么我不能截断文本
- 23. 为什么我不能在c#中看到小数点数字?
- 24. 如何截断jscript中的浮点数?
- 25. MongoDB将截断浮点值返回到6个小数点
- 26. Mysql的截断小数
- 27. 为什么LabView将小数转换为小浮点数?
- 28. 如何截断小数部分?
- 29. 如何在PHP中截断小数?
- 30. 如何截断3号位小数
什么语言?什么环境? –
我认为标签标识为C.环境应该没有关系。 –
“当我进行除法操作时” - >是使用整数操作数还是浮点数的除法?一个好的答案取决于这个。 – chux