1 00:00:05,000 --> 00:00:10,000 Yes, students in this lesson, I would like to draw attention to some operations with integers and 2 00:00:10,000 --> 00:00:12,000 floating point numbers. 3 00:00:12,000 --> 00:00:14,000 Let's start with use this example. 4 00:00:14,000 --> 00:00:17,000 Imagine you want to divide two integers. 5 00:00:17,000 --> 00:00:23,000 Let's imagine you're implementing overapplication and you want to split the right charge between you 6 00:00:23,000 --> 00:00:23,000 and your friends. 7 00:00:24,000 --> 00:00:30,000 If right charge was 20 bucks and there were three of you, each of you should pay for six bucks. 8 00:00:32,000 --> 00:00:38,000 According to the results of our program, probably each of you will be happy because you all together 9 00:00:38,000 --> 00:00:42,000 saved two bucks, but Uber driver will hit you up. 10 00:00:43,000 --> 00:00:49,000 You need to remember that when you are dividing integers, you receive integer and there is no rounding 11 00:00:49,000 --> 00:00:50,000 fractional. 12 00:00:50,000 --> 00:00:55,000 Part of the result is just not taken into account what you can do about it now. 13 00:00:55,000 --> 00:01:00,000 Just change type of the option to double to get floating point number as a result. 14 00:01:02,000 --> 00:01:09,000 You see, I am custom integer to double here and right in the program, we'll run with you more about 15 00:01:09,000 --> 00:01:11,000 expression, type in the separate less than. 16 00:01:12,000 --> 00:01:18,000 Now you see double the result, but still this is something what the end user wouldn't expect and can't 17 00:01:18,000 --> 00:01:20,000 pay exactly this amount of money. 18 00:01:21,000 --> 00:01:22,000 So what to do in this case? 19 00:01:23,000 --> 00:01:26,000 The rule of thumb here is to use big decimal object. 20 00:01:27,000 --> 00:01:32,000 In previous lessons, we learned how to attach source code to eclipse and how to investigate the source 21 00:01:32,000 --> 00:01:33,000 code. 22 00:01:33,000 --> 00:01:37,000 So feel free to open Javadoc for that small type. 23 00:01:37,000 --> 00:01:37,000 To learn more. 24 00:01:39,000 --> 00:01:44,000 The big Desmonte class provides reparations for arithmetic, scale manipulation around in. 25 00:01:46,000 --> 00:01:53,000 Also, this class gives its user complete control of around in behavior, if no round in mode is specified 26 00:01:53,000 --> 00:01:57,000 and the exact result cannot be represented, an exception is thrown. 27 00:01:58,000 --> 00:02:00,000 Let's declare a variable of big decimal type here. 28 00:02:02,000 --> 00:02:09,000 To create object, object that small use, special method value of like this and calling value of method 29 00:02:09,000 --> 00:02:11,000 here of big decimal type. 30 00:02:12,000 --> 00:02:17,000 This message represents gradational architecture, Partan, which is called factory method. 31 00:02:17,000 --> 00:02:21,000 We'll discuss portions in the separate lesson for now. 32 00:02:21,000 --> 00:02:24,000 Just remember how to create an object of that small type. 33 00:02:25,000 --> 00:02:27,000 You can also set scale for this number. 34 00:02:27,000 --> 00:02:29,000 We are having to deal with money here. 35 00:02:29,000 --> 00:02:31,000 So let me set a scale of two. 36 00:02:32,000 --> 00:02:33,000 This is our right feet. 37 00:02:34,000 --> 00:02:37,000 Let's create a new variable which will contain amount of people. 38 00:02:37,000 --> 00:02:39,000 We have three people. 39 00:02:40,000 --> 00:02:46,000 And now let's divide right feet by amount of people without rounding more specified, we'll have arithmetic 40 00:02:46,000 --> 00:02:48,000 exception like this. 41 00:02:49,000 --> 00:02:54,000 Our program wants to tell us that we can't show the exact calculation result. 42 00:02:54,000 --> 00:02:59,000 Let's set up around in put call my hair in mode. 43 00:03:01,000 --> 00:03:01,000 Not. 44 00:03:03,000 --> 00:03:08,000 You can choose out of different rounded modes here, but let's select the one we learned at school. 45 00:03:09,000 --> 00:03:11,000 And now let's bring the result to console. 46 00:03:12,000 --> 00:03:13,000 And runs the program. 47 00:03:15,000 --> 00:03:18,000 And now we see the results, which we were expected to see. 48 00:03:20,000 --> 00:03:27,000 Let's also review operations with double imagine you have some double number three point one, and you 49 00:03:27,000 --> 00:03:32,000 need to subtract from it one point twenty one when you subtract double value from double value. 50 00:03:33,000 --> 00:03:34,000 You will see a result like this. 51 00:03:37,000 --> 00:03:44,000 The funny story that I order a pizza online recently and applied my bonuses as a result, I got no like 52 00:03:44,000 --> 00:03:44,000 this. 53 00:03:45,000 --> 00:03:49,000 I asked them how they would like me to pay this amount of money we love to meet. 54 00:03:49,000 --> 00:03:53,000 But still, as a programmer, you need to know what to do. 55 00:03:53,000 --> 00:03:53,000 In such cases. 56 00:03:54,000 --> 00:04:00,000 There are infinite number of real numbers in any range, but only a finite number of bits to represent 57 00:04:00,000 --> 00:04:00,000 them. 58 00:04:01,000 --> 00:04:05,000 For this reason, a rounding error is expected for doubles and flaws. 59 00:04:06,000 --> 00:04:12,000 The number you get is the closest number possible that can be represented by double in 14 points representation. 60 00:04:13,000 --> 00:04:15,000 Here's where Big Decimal was rounding. 61 00:04:15,000 --> 00:04:16,000 What will help us? 62 00:04:17,000 --> 00:04:23,000 Let's create the objects of big decimal here, do not forget to set the scale for them. 63 00:04:24,000 --> 00:04:30,000 And let's subtract this number from this one, I'm right in the program and here is the result. 64 00:04:31,000 --> 00:04:36,000 Today, you learned how to control precision in arithmetic operations and how to set up around in the 65 00:04:36,000 --> 00:04:37,000 rules.