簡體   English   中英

將多個浮點值匯總為新的浮點(雙精度值)

[英]Summing multiple float values into a new float (Double values)

如何將多個doubleValue求和成一個新的double? 目前,我已經嘗試過這樣:

double sum = doubleWantToSum1 + doubleWantToSum2 + doubleWantToSum; //etc...

此外,我想將結果用於此等式

double tooMuch = sum - 100;

我要返回100減去浮動金額的總和。 目前,唯一要做的就是輸出doubleWantToSum1-100。我相信答案很簡單,但是由於我在互聯網上找不到任何關於此的答案,如果你們中的一個告訴我,我會喜歡的。

編輯,添加代碼注意,我知道這很糟糕,可能無效。

//Nummerformatterere - Kinda unødvendig
NSNumberFormatter *fmt1  =  [NSNumberFormatter new]; //Temp
NSNumberFormatter *fmt2  =  [NSNumberFormatter new]; //Methane
NSNumberFormatter *fmt3  =  [NSNumberFormatter new]; //Ethane
NSNumberFormatter *fmt4  =  [NSNumberFormatter new]; //Propane
NSNumberFormatter *fmt5  =  [NSNumberFormatter new]; //n-butane
NSNumberFormatter *fmt6  =  [NSNumberFormatter new]; //i-butane
NSNumberFormatter *fmt7  =  [NSNumberFormatter new]; //n-petane
NSNumberFormatter *fmt8  =  [NSNumberFormatter new]; //i-petane
NSNumberFormatter *fmt9  =  [NSNumberFormatter new]; //n-hexane
NSNumberFormatter *fmt10 =  [NSNumberFormatter new]; //nitrogen
NSNumberFormatter *fmt11 =  [NSNumberFormatter new]; //oxygen

//Float for å få textfieldsene til nummer
double temprature = [fmt1  numberFromString: tempratureText.text].doubleValue;
double methane    = [fmt2  numberFromString: methaneText.text   ].doubleValue;
double ethane     = [fmt3  numberFromString: ethaneText.text    ].doubleValue;
double propane    = [fmt4  numberFromString: propaneText.text   ].doubleValue;
double nbutane    = [fmt5  numberFromString: nbutaneText.text   ].doubleValue;
double ibutane    = [fmt6  numberFromString: ibutaneText.text   ].doubleValue;
double npetane    = [fmt7  numberFromString: npetaneText.text   ].doubleValue;
double ipetane    = [fmt8  numberFromString: ipetaneText.text   ].doubleValue;
double nhexane    = [fmt9  numberFromString: nhexaneText.text   ].doubleValue;
double nitrogen   = [fmt10 numberFromString: nitrogenText.text  ].doubleValue;
double oxygen     = [fmt11 numberFromString: oxygenText.text    ].doubleValue;

//Floats og formatters for underflow, overflow
double sum = (methane + ethane + propane + nbutane + ibutane + npetane + ipetane + nhexane + nitrogen + oxygen);
double overflowPart = 100 - sum;
double underflowPart = sum - 100;

NSNumber *underFlow = [[NSNumber alloc]initWithDouble:underflowPart];
NSNumberFormatter *underFlowResult = [[NSNumberFormatter alloc] init];
underFlowResult.numberStyle = NSNumberFormatterDecimalStyle;
[underFlowResult setNumberStyle:NSNumberFormatterDecimalStyle];
[underFlowResult setMaximumFractionDigits:2];
NSString *formattedUnderFlow = [underFlowResult stringFromNumber:(NSNumber*)underFlow];

NSNumber *overFlow = [[NSNumber alloc]initWithDouble:underflowPart];
NSNumberFormatter *overFlowResult = [[NSNumberFormatter alloc] init];
overFlowResult.numberStyle = NSNumberFormatterDecimalStyle;
[overFlowResult setNumberStyle:NSNumberFormatterDecimalStyle];
[overFlowResult setMaximumFractionDigits:2];

NSString *formattedOverFlow = [overFlowResult stringFromNumber:(NSNumber*)overFlow];

//Floats for variabler til ligningen
double Xi = 1;
double Mi = 2;
double Vi = 3;
double Vc = 4;

//Ligningen for å regne ut density
double over1 = Xi * Mi;
double under1 = Xi * Vi - Vc;

//=RESULT=
double result =  over1 / under1;

/*----------STREK FORDI DET ER CHILL OG JEG ER FERDIG MED FLOATER----------*/

NSString *resultString = [[NSString alloc]initWithFormat:@"D = %f", result];
NSString *overflowString = [[NSString alloc]initWithFormat:@"Total %@ greater than 100 %", formattedOverFlow ];
NSString *underflowString = [[NSString alloc]initWithFormat:@"Total %@ less than 100 %", formattedUnderFlow];

/*----------STREK FORDI DET ER CHILL OG JEG ER FERDIG MED STRINGS----------*/
/*
if (temprature == 0 || methane == 0 || ethane == 0 || propane == 0 || nbutane == 0 || ibutane == 0 || oxygen == 0 || npetane == 0 || ipetane == 0 || nhexane == 0 || nitrogen == 0)
{
    outputText.text = @"Please enter all values";
} */
if (underflowPart == 100)
{
    outputText.text = @"Start by entering values above";
}
if (sum == 100)
{
    outputText.text = resultString;
}

if (sum > 100)
{
    outputText.text = overflowString;
}

if (sum < 100)
{
    outputText.text = underflowString;
}
/*----------STREK FORDI DET ER CHILL OG JEG ER FERDIG MED 'if'----------*/

這可能取決於您要添加的數字的大小(精度)。 為了解決這個問題,您可以使用NSDecimalNumber ,它最多可以保留38位十進制數字。

注釋中尚未明確指出,您對代碼中的數字求和的方式是正確的。 這些注釋所隱含的含義是,您求和的數字是錯誤的,因此應記錄它們以了解它們的含義。

同樣,您可以使用以下方法保存一些代碼(消除數字格式化程序):

double temprature = [tempratureText.text doubleValue];

代替

double temprature = [fmt1  numberFromString: tempratureText.text].doubleValue;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM