我想做一个函数来计算基于时间的成本。在不到三个小时的任何时间内,它将返回2美元的统一费率。对于每小时或部分小时,它将额外收取0.50美元。小时由用户输入为2位小数的浮点数据类型。我怎样才能让它到达一个整整一个小时的时间呢?这里是我迄今为止该函数的代码:C:我如何总是将一个数字加起来
int calculateCharges(float hours)
{
if (hours <= 3){
return 2.00
}
else
我想做一个函数来计算基于时间的成本。在不到三个小时的任何时间内,它将返回2美元的统一费率。对于每小时或部分小时,它将额外收取0.50美元。小时由用户输入为2位小数的浮点数据类型。我怎样才能让它到达一个整整一个小时的时间呢?这里是我迄今为止该函数的代码:C:我如何总是将一个数字加起来
int calculateCharges(float hours)
{
if (hours <= 3){
return 2.00
}
else
首先,您使用的数据类型int
,也不能容纳分数值(和将隐含一轮他们走向零,是以往任何时候都调用的函数,甚至前。)您应该使用double
,因为这是适用于小数的数据类型。
您还需要使用ceil(x)
函数,该函数给出的最接近的整数大于或等于x
。
#include <math.h>
double calculateCharges(double hours)
{
if (hours <= 3) {
return 2.00;
} else {
// return $2.00 for the first 3 hours,
// plus an additional $0.50 per hour begun after that
return 2.00 + ceil(hours - 3) * 0.50;
}
}
要回答您的查询,您应该研究您的变量类型。您可以使用小时的,但您返回2.00这是一个浮点数(又名不是一个整数)
#include <math.h>
double calculateCharge(double hours)
{
//To use accurately the ceil function from Math, the parameter should be a double!
double calculateTime = (hours <3) ? 2 : (2+ceil(hours-3)*0.50);
return calculateTime;
}
包含的文件math.h头能够使用数学STRUC。当你必须计算数值时,它是一个真正的帮助结构,例如可以计算数字的正弦。在我们的情况下,ceil函数将始终返回值以四舍五入到最接近的整数。您可以了解更多有关在这里:http://www.techonthenet.com/c_language/standard_library_functions/math_h/ceil.php 哦,还有,你说不到三小时,但在你的功能,你说小于或等于3.确保你实际使用的良好的工作环境,或者你可以用结果落得你不期待在运行你的功能时!
哦,你可以看一下三元运营商那里才能有更好的理解它,因为它是一个有点模糊的第一次:http://msdn.microsoft.com/en-us/library/ty67wk28.aspx
希望它可以帮助你:)
'int hours'应该可能是'double hours',因为如果'hours'是一个整数,'ceil(hours-3)'不会真的做任何事情。 – Frxstrem 2014-10-18 21:36:55
你是绝对正确的!我要编辑自己的帖子谢谢:) 它已经很长一段时间,因为我已经做了ç哈哈@Frxstrem – 2014-10-18 21:38:09
如果您得到的回答可以帮助你以任何方式或实际上是被你要找的人,将其标记作为答案,让其他人在未来知道! :) @ centurion937 – 2014-10-19 00:57:50
ceil函数。 http://www.tutorialspoint.com/c_standard_library/c_function_ceil.htm – Doon 2014-10-18 21:20:23
你说“部分时间”,但你的函数需要一个'int',它不能保存小数值。你能详细说明你想完成什么吗? – 2014-10-18 21:26:34
我的不好。我将它作为一个整数初始化,然后将其切换为浮点数以使其接受所有时间输入。我只是忘了切换。感谢您的支持。 – centurion937 2014-10-18 23:40:41