C语言自动类型转换和强制类型都不会四舍五入吗
3个回答
展开全部
类型转换只会“舍”而不会“入”,也就是舍去小数部分。例如一个浮点型值为3.999,经类型转换到int型后值为3。
但楼下说C语言没有四舍五入的概念,这是错误的。某些情况下程序会进行四舍五入,例如格式化输出时。以%a.bf(a和b都是数字)输出时,系统将对b+1位进行四舍五入,然后输出保留小数点后b位的结果。例如定义浮点数f=3.999,然后printf("%.2f",f),结果将是4.00。
但楼下说C语言没有四舍五入的概念,这是错误的。某些情况下程序会进行四舍五入,例如格式化输出时。以%a.bf(a和b都是数字)输出时,系统将对b+1位进行四舍五入,然后输出保留小数点后b位的结果。例如定义浮点数f=3.999,然后printf("%.2f",f),结果将是4.00。
更多追问追答
追答
这句话存在诸多问题,首先必须存在对应的类型转换才能转换,否则将报错。当赋值号两边数据类型不相同时,编译器将首先套用赋值号右侧表达式中的显式类型转换。若表达式不存在显式类型转换,则编译器将查找两个数据类型之间是否存在对应的隐式类型转换。如不存在隐式类型转换,则转换无法完成,编译报错。若可以进行转换,当赋值号右侧的数据类型长度(长度指其占用的字节数)大于左侧的数据类型长度时,转换将导致精度丢失,过程是截取,即对于浮点型转整型来说只保留整数部分,截掉小数部分。小数部分将直接被舍弃,而不会四舍五入到整数部分。
展开全部
C语言数据类型转换自转换强制转换两类 自转换自转换发同数据类型量混合运算由编译系统自完自转换遵循规则: 1.若参与运算量类型同则先转换同类型进行运算 2.转换按数据度增加向进行保证精度降低int型long型运算先int量转long型再进行运算 3.所浮点运算都双精度进行即使仅含float单精度量运算表达式要先转换double型再作运算 4.char型short型参与运算必须先转换int型 5.赋值运算赋值号两边量数据类型同 赋值号右边量类型转换左边量类型 右边量数据类型度左边丢失部数据降低精度 丢失部按四舍五入向前舍入 强制类型转换 强制类型转换通类型转换运算实现其般形式: (类型说明符) (表达式) 其功能表达式运算结强制转换类型说明符所表示类型例: (float) a a转换实型(int)(x+y) x+y结转换整型使用 强制转换应注意问题: 1.类型说明符表达式都必须加括号(单变量加括号)(int)(x+y)写(int)x+y则x转换int型再与y相加 2.论强制转换或自转换都本运算需要变量数据度进行临性转换改变数据说明该变量定义类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中没有四舍五入的概念。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询