简体   繁体   中英

Summing multiple float values into a new float (Double values)

How can I sum multiple doubleValues into a new double? At the moment I have tried like this:

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

And further, I want to use the result for this equation in

double tooMuch = sum - 100;

Which I want to return 100 minus the total value of my floats. At the moment the only thing this does is to output doubleWantToSum1 - 100. I believe the answer to this rediciously simple, but since I could not find anything on the internet about this I would love it if one of you guys told me.

EDIT, ADDED CODE Note, I know this is poor and probably uneffective.

//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'----------*/

It may depend on how large (how much precision) the numbers have that you are adding. In order to get around this, you can use NSDecimalNumber , which will hold up to 38 decimal digits of precision.

It has not yet been explicitly said in the comments that the way you are summing the numbers in your code is correct. What the comments are implying is that the numbers you are summing are wrong, and you should log them to see what they are.

As well, you could save some code (eliminate your number formatters) by using:

double temprature = [tempratureText.text doubleValue];

instead of

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM