我一直在尝试寻找始终舍入变量的最佳方法。
我尝试了ceil(x)函数,但是由于某种原因,当x已取整时,会将其向上取整为x + 1。
例如:
double og_grade = 50;
double fact_grade = ceil(og_grade*1.1);
由于某些原因og_grade * 1.1 == 55.0000 ....但是ceil(og_grade * 1.1)== 56.0000 ....
我做错了什么?您会提出什么解决方案?
(og_grade始终是整数)。
我尝试了ceil(x)函数,但是由于某种原因,当x已经取整时,它会将其四舍五入为x + 1
否,这并不意味着的实施ceil有缺陷。不是不可能,但极不可能。
x实际上,观察到这种效果的原因可能不是整数,并且格式化或调试器中省略了小数部分。
假设IEEE754,最接近 double 1.1的值略大于该值。这最有可能说明您的结果。
简而言之,我的任务是获得一个成绩并返还10%的分数,并且总是四舍五入。如果它是60.5,则返回61。如果它是55,则返回55。如果结果大于100,则应返回100。我尝试返回原始等级的ceil()乘以1.1。所有非常非常基本的东西,但是我一直在为这个问题发疯。最佳的执行方式是什么?
#https://stackoverflow.com/questions/59090506/best-way-to-always-round-up-doubles-in-c
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。