How to display price of a menu item with 2 decimals? - decimal

Super newb. Just a few days in and trying to display the price of an item with 2 decimal points instead of as an integer. I know there are several ways to represent decimal points. I've seen short examples and wasn't sure where to use them or if they would work at all with what i've written enter image description here
format(value, '.2f')
n = 5
print(f'{n:.2f}')
b = round(a, 2)
print(b)

Related

Product MarkUp with Excel Formula

I have a list of product price that i need to markup.
I've tried using with Regular Formula
=A1*10%+A1+5,000 = 36,130 (A1 = 28,300)
Is there any way to remove the last 2 Digit and adjust the price if the price result is 36,130 it will remove the 30 (36,100) but if the price 36,160 it will adjust to 36,200 ?
Use:
=MROUND(<YourExpression>,100)
In order to round up to a certain number of digits, this is what I usually do (example of 2 digits):
multiply by 100
round to the nearest integer
divide by 100 again
(use 1000 for 3 digits, ...)
For rounding, you might use the ROUND() worksheet function.

Removing ".00" from Decimal format numbers to make them whole numbers keeping other decimal numbers intact

I have a column that has Amount rounded to 2 decimal places. So there are two types of enteries, one of the form 359.00 and others 359.78. I want to remove .00 from the first form of enteries to make it interger(359) keeping the decimal format of other number intact.
Data are floating numbers
A column don't have mixed types. Assuming your data are stored as floating numbers (dtype: float64), they will remain floats. What you can do is to use a custom format so that they are shown on the screen as you wish, but internally they remains floats. For example:
dfa = pd.DataFrame.from_records([(1,), (3.34,), (2.49,), (5,), (7,)], columns=['Amount'])
pd.options.display.float_format = lambda x : "{:2.2f}".format(x).rstrip('0').rstrip('.')
print(dfa)
This prints:
Amount
0 1
1 3.34
2 2.49
3 5
4 7
Data are strings
If instead your data are just strings representing numbers (dtype: object) you can use pandas.applymap to actually edit the strings according to a format style.
dfb = pd.DataFrame.from_records([("1.00",), ("3.34",), ("2.49",), ("5.00",), ("7.00",)], columns=['Amount'])
dfbb = dfb.applymap(lambda x : str(x).rstrip('0').rstrip('.'))
print(dfbb)
This prints (again):
Amount
0 1
1 3.34
2 2.49
3 5
4 7
Data are floating numbers but you want strings
In this case you can combine the two methods:
dfc = dfa.applymap(lambda x : "{:2.2f}".format(x).rstrip('0').rstrip('.'))
print(dfc)
Starting from a dataframe with floating numbers, you end with a dataframe of formatted strings. It prints the same, no need to touch pandas format settings.
Credits to this answer for the basic idea.

Excel --- Tried many time but fail

enter image description here
I want to sum all these data given in right side to my format. I tried many time and many formulas but some things left every time. Please help
You can achieve most of what you need with a mixture of formulae and a pivot table. But I couldn't quite get everything you wanted, as some of it doesn't make sense. For example, you have 2013 - 2012 - <5 as your first row header, but there are multiple years that give an age less than 5, e.g. 2014 - 2013 - <5 would also be valid. I would suggest hardcoding the years somehow, as they aren't entirely relevant anyway?
Breaking it down into separate problems.
How do I get the Roman number version of the Class?
You could have a massive IF statement, but I went for a VLOOKUP. You could have used the ROMAN built in function, but you can't because your numbering is "first", "second", etc. instead of "1", "2", etc.
So I actually went for both solutions, just to show how they both work. First I created a named table (list object) called "Named" that looks like this:
Class Class Number
First 1
Second 2
Third 3
Fourth 4
etc.
I then used this to VLOOKUP your class names and convert them into numbers. Next I used the ROMAN function to make this into roman numeral format. So I ended up with this (columns E, F and G in my worksheet):
Class Class Number Roman
First 1 I
First 1 I
First 1 I
First 1 I
First 1 I
Second 2 II
Third 3 III
Fourth 4 IV
With formulae:
Class Number - =VLOOKUP(E2,Named,2,FALSE);
Roman - =ROMAN(F2).
How do I get from "Male"/ "Female" to "B"/ "G"?
This was trivial, just =IF(A2="Male", "B", "G") where I have Gender in column A.
How do I get the "age text" so it handles "<5" and ">22"?
My age was in column D, so this was also trivial, =IF(D2<5,"<5", IF(D2>22, ">22", D2)).
Now I have enough data to pivot, so I selected my entire table, which was basically your sample data with calculated columns added to the right. Then I inserted a pivot table and dragged in row/ column headers to make it match your format. This doesn't give you the year columns, but it gives you everything else. For example, just using a few random rows of sample data (as I couldn't be bothered to type it all in):
I went from:
Gender Date of Birth Age Class
Male 06-Jan-14 4 First
Female 07-Sep-11 6 First
Male 01-Jan-12 6 First
Male 31-Dec-12 5 First
Female 01-Oct-11 6 First
Female 16-Nov-10 7 Second
Male 31-Oct-09 8 Third
Male 25-Oct-10 7 Fourth
To:
I II III IV
B G G B B
<5 1
5 1
6 1 2
7 1 1
8 1
Total 3 2 1 1 1
From here you could simply hardcode the columns A and B from your desired final format, as these years aren't actually based on the data?

Nesting Excel Score

For a project we are making an Excel file for the WK in Russia.
So I need the following things (if its possible only nesting):
TOTO: the home team wins = 1, away team wins = 2, its equal = 3
This is what I have right now for these:
IF(F5<H5;"2";IF(F5>H5;"1";IF(F5;"3";IF(H5;"3";""))))
This works but if I set the score 0-0 then I get 0 back in stead of 3.
Then the next one:
If they gambled that the home team score is correct they get 2 points,
If they gambled that the away team score is correct they get 2 points
If they gambled that the TOTO is correct: 5 points
If all is correct: 1 bonus point
What i mean with the second thing is if somebody says that the score is 2-1 and the game ends on 0-1 then i get 2 points (one for the TOTO and 1 point for the team that scored 0-1).
E.g. Belgium-Tunis (player1) on 2-1 with TOTO = 1. Game ends on 0-1. Player1 gets 2 points in total because he predict the goals of Tunis correct.
Last but not least:
IF the teams are going to the quarter finals,... are coming a few lines on it:
Country good: 10 points
European champ correct: 25 points
Total yellow: 20 points
TOtal red: 20 points.
I believe the formula you want for the first of your questions (the home team wins = 1, away team wins = 2, its equal = 3) is:
=IF(F5<H5,"2",IF(F5>H5,"1",IF(F5=H5,"3","")))
Not sure why you have the numbers in speech marks (have left as is in the above) you could have:
=IF(F5<H5,2,IF(F5>H5,1,IF(F5=H5,3,"")))
Which would probably be easier if you want to do any maths with the values.
It's not entirely clear what you're asking with the rest of the question(s).

How to get weighted sum depending on two conditions in Excel?

I have this table in Excel:
I am trying to get weighted sum depending on two conditions:
Whether it is Company 1 or Company 2 (shares quantity differ)
Whether column A (Company 1) and column B (Company 2) has 0 or 1 (multipliers differ)
Example:
Lets calculate weighted sum for row 2:
Sum = 2 (multiplier 1) * 50 (1 share price) * 3 (shares quantity for Company 1) +
+0.5 (multiplier 0) * 50 (1 share price) * 6 (shares quantity for Company 2) = 450
So, Sum for Row 2 = 450.
For now I am checking only for multipliers (1 or 0) using this code:
=COUNTIF(A2:B2,0)*$B$9*$B$8 + COUNTIF(A2:B2,1)*$B$9*$B$7
But it does not take into account the shares quantities for Company 1 or Company 2. I only multiply 1 share price with multipliers, but not with shares quantity).
How can I also check whether it is Company 1 or Company 2 in order to multiply by corresponding Shares quantity?
Upd:
Rasmus0607 gave a solution when there are only two companies:
=$B$9*$E$8*IF(A2=1;$B$7;$B$8)+$B$9*$E$9*IF(B2=1;$B$7;$B$8)
Tom Sharpe gave a more general solution (number of companies can be greater than 2)
I uploaded my Excel file to DropBox:
Excel file
I can offer a more general way of doing it with the benefit of hindsight that you can apply to more than two columns by altering the second CHOOSE statement:-
=SUM(CHOOSE(2-A2:B2,$B$7,$B$8)*CHOOSE(COLUMN(A:B),$E$8,$E$9))*$B$9
Unfortunately it's an array formula that you have to enter with CtrlShiftEnter. But it's a moot point whether or not it would be better just to use one of the other answers with some repetition and keep it simple.
You could also try this:-
=SUMPRODUCT(N(OFFSET($B$6,2-A2:B2,0)),N(OFFSET($E$7,COLUMN(A:B),0)))*$B$9
Here's how it would be for three companies
=SUM(CHOOSE(2-A2:C2,$B$7,$B$8)*CHOOSE(COLUMN(A:C),$F$8,$F$9,$F$10))*$B$9
(array formula) or
=SUMPRODUCT(N(OFFSET($B$6,2-A2:C2,0)),N(OFFSET($F$7,COLUMN(A:C),0)))*$B$9
=$B$9*$E$8*IF(A2=1;$B$7;$B$8)+$B$9*$E$9*IF(B2=1;$B$7;$B$8)
Since in the COUNTIF function, you don't know beforehand, which company column contains a 0, or a 1, I would suggest a longer, but more systematic solution using IF:
=$B$9*$E$8*IF(A2=1;2;0,5)+$B$9*$E$9*IF(B2=1;2;0,5)
This is a bit less general, but should produce the result you expect in this case.

Resources