我想做一個函數來計算基於時間的成本。在不到三個小時的任何時間內,它將返回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