2014-10-18 45 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

相關問題