Явное приведение к циклу - PullRequest
1 голос
/ 28 марта 2020

"Напишите программу, которая читает двойное значение от пользователя, и сохраните его в двойной переменной. Затем он выполнит явное приведение, чтобы присвоить его переменной с плавающей запятой. Затем вы вычислите абсолютное значение разницы между этими значениями. две переменные. Сделайте это в al oop, пока эта разница ниже порогового значения, которое было инициализировано до 1,0 до l oop. В конце каждой итерации уменьшите пороговое значение, разделив его на 10,0. "

Мне дали этот пример для отработки для моего java класса, и я могу даже дойти до чтения и сохранения переменной double, но я потерял "явное приведение, чтобы назначить его переменная типа float ". Я до сих пор не понимаю, что такое явное приведение / выполнение, поскольку в моем учебнике его даже едва ли определяют, поэтому мне больше всего хотелось бы определить, что он делает и как именно его кодировать так, как этого требует вопрос.

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Здравствуйте и добро пожаловать в java кодирование.

Приведение типов означает присвоение переменной новому типу, даже если она была предопределена.

Возьмите Double

double number = 4.5;

Теперь вы должны сохранить это число как целое число.

int falsyNumber = number;

Это приведет к ошибке, поскольку ваше целое число не может хранить значения после десятичной точки. Компилятор может остановить выполнение по умолчанию и вызвать sth. типа «ты потеряешь информацию, если сделаешь это, намеренно?»

Для этого нужно сказать: «ДА, я не забочусь об этих потерянных данных и мне нужно дополнительное пространство памяти, которое я могу освободить с этим .. "

Таким образом, вы должны явным образом типизировать эту переменную, чтобы она была целочисленной.

int falsyNumber = (int)number;

В скобках указан тип, и число используется так, как оно было для этого типа (в этой строке по крайней мере). Таким образом, ваш компилятор не выдаст здесь ошибку, но вы получите 4, потому что вы потеряете эти данные, которые, очевидно, не могут быть сохранены целым числом.

Многие слова для такой простой строки. Вы вводите свое двойное значение и сохраняете его в (другую) переменную типа float.

double input = 3.983243242423;                   // that is your input stored
float numberToCalulateWith = (float)input;       // here it truncates eventually

Следует отметить, что в некоторых случаях разница не будет столь заметной. Поскольку вы сохранили «4» в виде двойного числа, а затем разыгрываете его как число с плавающей точкой, у вас все равно останется число 4. Но если это не так просто, вы потеряете данные, и цель этого упражнения - увидеть, когда вы проиграли. это.

0 голосов
/ 28 марта 2020
public class Main {
    public static void main(String[] args) {
        double d1 = 5.4;

        // The following won't compile without explicit casting as a double value
        // requires a bigger memory size than f1 can hold
        // float f1 = d1;

        float f2 = (float) d1;// Explicit casting

        // Given below is an example of implicit casting as a double variable has more
        // memory space than a float value requires.
        double d2 = f2;
    }
}

Проверьте это для получения дополнительной информации. Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.

...