2015-11-12 2 views
0

Наш учитель попросил нас найти об этом, и то, что я продолжал получать из сети, объясняет, что означает двойной и плавающий.Можно ли добавить поплавок в двойной?

Можете ли вы рассказать мне, возможно ли это или нет, и объяснить, почему или почему нет?

+7

Почему бы вам не попробовать его, вы будете в ближайшее время посмотрите, возможно ли это. – Kenney

+0

Хотя я и хотел, мы до сих пор не знаем, как создавать такие программы. Это всего лишь вступительный вопрос нашего профессора. Но в любом случае, спасибо! :) Я попробую, как только научусь построить его. Бог благословил! –

+1

Хорошо! Btw: 'class Main {public static void main (String [] args) {double x = 1; float y = 2; x + = y; System.out.println (x); }} '. – Kenney

ответ

4

Простой ответ: да, но только если double не слишком большой.

float «ы являются одинарной точности чисел с плавающей точкой, то есть они используют 23-разрядную мантиссу и 8-битный показатель степени, что соответствует ~ 6/7 S.F. точность и диапазон ~ 10^38.

double «ы являются двойной точности - с 52-битной мантиссы и 11-битной экспоненты, что соответствует ~ 14/15 S.F. точность и диапазон ~ 10^308.

Поскольку у двойников есть больший диапазон, чем поплавки, добавление поплавка в очень большой двойник аннулирует эффекты поплавка (называемые underflow). Конечно, это может произойти и для двух двойных типов.

https://en.wikipedia.org/wiki/Floating_point

+0

Я не думаю, что это называется underflow (по крайней мере, я никогда не слышал, чтобы это называлось так). Underflow - это когда вы делаете что-то вроде Integer.MIN_VALUE - 1 и получаете положительный ответ. –

+0

@PaulBoddington underflow - это когда операция обрезает значение операнда, потому что его относительное значение слишком мало. см. https://en.wikipedia.org/wiki/Arithmetic_underflow –

+0

Я что-то узнал. Спасибо. –

2

Вы можете добавить два числа с разными знаками после запятой (например 432.54385789364 + 432.1)? Да, ты можешь.

В Java это та же идея.

От Java Tutorials:

  • поплавка: Тип поплавка данных является одинарной точности 32-битная IEEE 754 с плавающей точкой. Его диапазон значений выходит за рамки этого обсуждения, но указан в разделе «Типы, форматы и значения плавающей запятой» Спецификации языка Java. Как и в случае рекомендаций для байтов и коротких, используйте float (вместо double), если вам нужно сохранить память в больших массивах чисел с плавающей запятой. Этот тип данных никогда не должен использоваться для точных значений, таких как валюта. Для этого вам нужно будет использовать класс java.math.BigDecimal. Числа и строки охватывают BigDecimal и другие полезные классы, предоставляемые платформой Java.

  • double: двойной тип данных - это 64-битная 64-битная плавающая точка IEEE 754 с двойной точностью. Его диапазон значений выходит за рамки этого обсуждения, но указан в разделе «Типы, форматы и значения плавающей запятой» Спецификации языка Java. Для десятичных значений этот тип данных обычно является выбором по умолчанию. Как упоминалось выше, этот тип данных никогда не должен использоваться для точных значений, таких как валюта.

В принципе, они оба являются держателями для знаков после запятой. То, как они отличаются друг от друга, насколько они точны. A float может быть только 32 бит в размере, по сравнению с double, который является 64 бит в размере. A float может иметь точность до 5 или 6 чисел с плавающей точкой, а double может иметь точность до 10 чисел с плавающей запятой.

В основном ... a double может хранить десятичное число лучше, чем float ... но занимает больше места.


Чтобы ответить на ваш вопрос, вы можете добавить float к double и наоборот. Как правило, результат будет сделан в double, и вам нужно будет вернуть его обратно в float, если это то, что вы хотите.

1

Если вы хотите быть очень глубоким в этом вопросе, вы должны сказать «да», это возможно из-за принудительного значения стоимости, но оно открывает дверь для более серьезных ошибок точности, чтобы накапливаться незаметно для компилятора. float имеет, по существу, точность, чем double и, к сожалению, является по умолчанию типом буквенных чисел с плавающей запятой по умолчанию в источнике Java. На практике обязательно используйте суффикс d на литералах, чтобы убедиться, что они являются double, если вам нужно использовать с плавающей запятой.

Эти ошибки точности могут привести к серьезному ущербу и даже потере жизни в чувствительных системах.

Плавающая точка очень сложна в использовании, и ее следует избегать, если это возможно. Одна из чрезвычайно очевидных вещей, которые не делают это, обычно ошибочно делается, представляет валюту как float или double. Это может привести к тому, что реальные деньги будут эффективно переданы или украдены у людей.

Плавающая точка (предпочитающая double) подходит для приблизительных вычислений и некоторых высокопроизводительных научных вычислительных приложений. Однако по-прежнему чрезвычайно важно знать характеристики точности потерь, особенно когда полученное значение с плавающей запятой подается в дополнительные вычисления с плавающей запятой.

Это более обычно приводит численных вычислений, и теперь я действительно ушел далеко от дома :)

SAS имеет приличный документ по этому вопросу: http://support.sas.com/resources/papers/proceedings11/275-2011.pdf