2014-10-18 25 views
0

我想做一个函数来计算基于时间的成本。在不到三个小时的任何时间内,它将返回2美元的统一费率。对于每小时或部分小时,它将额外收取0.50美元。小时由用户输入为2位小数的浮点数据类型。我怎样才能让它到达一个整整一个小时的时间呢?这里是我迄今为止该函数的代码:C:我如何总是将一个数字加起来

int calculateCharges(float hours) 
{ 
if (hours <= 3){ 
    return 2.00 
} 
else 
+4

ceil函数。 http://www.tutorialspoint.com/c_standard_library/c_function_ceil.htm – Doon 2014-10-18 21:20:23

+1

你说“部分时间”,但你的函数需要一个'int',它不能保存小数值。你能详细说明你想完成什么吗? – 2014-10-18 21:26:34

+0

我的不好。我将它作为一个整数初始化,然后将其切换为浮点数以使其接受所有时间输入。我只是忘了切换。感谢您的支持。 – centurion937 2014-10-18 23:40:41

回答

1

首先,您使用的数据类型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; 
    } 
} 
0

要回答您的查询,您应该研究您的变量类型。您可以使用小时的,但您返回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

希望它可以帮助你:)

+0

'int hours'应该可能是'double hours',因为如果'hours'是一个整数,'ceil(hours-3)'不会真的做任何事情。 – Frxstrem 2014-10-18 21:36:55

+0

你是绝对正确的!我要编辑自己的帖子谢谢:) 它已经很长一段时间,因为我已经做了ç哈哈@Frxstrem – 2014-10-18 21:38:09

+0

如果您得到的回答可以帮助你以任何方式或实际上是被你要找的人,将其标记作为答案,让其他人在未来知道! :) @ centurion937 – 2014-10-19 00:57:50

相关问题