Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以将浮点值添加到双精度浮点值?_Java - Fatal编程技术网

Java 是否可以将浮点值添加到双精度浮点值?

Java 是否可以将浮点值添加到双精度浮点值?,java,Java,我们的老师让我们对此进行搜索,我不断从网上得到的解释说明了double和float的含义 你能告诉我这是否可能,并解释为什么不可能吗?简单的回答:是的,但前提是双精度不是太大 浮点数是单精度浮点数,这意味着它们使用23位尾数和8位指数,对应于~6/7 s.f.精度和~10^38范围 双精度是双精度-具有52位尾数和11位指数,对应于~14/15 s.f.精度和~10^308范围 由于双精度的范围比浮动的范围大,因此在非常大的双精度上添加浮动将抵消浮动的下溢效应。当然,这也可能发生在两种双重类型上

我们的老师让我们对此进行搜索,我不断从网上得到的解释说明了double和float的含义


你能告诉我这是否可能,并解释为什么不可能吗?

简单的回答:是的,但前提是双精度不是太大

浮点数是单精度浮点数,这意味着它们使用23位尾数和8位指数,对应于~6/7 s.f.精度和~10^38范围

双精度是双精度-具有52位尾数和11位指数,对应于~14/15 s.f.精度和~10^308范围

由于双精度的范围比浮动的范围大,因此在非常大的双精度上添加浮动将抵消浮动的下溢效应。当然,这也可能发生在两种双重类型上


您能否添加两个小数位数不同的数字,例如432.54385789364+432.1?是的,你可以

在Java中,这是相同的想法

从:

浮点:浮点数据类型是单精度32位IEEE 754浮点。它的值范围超出了本文讨论的范围,但在Java语言规范的浮点类型、格式和值部分中有详细说明。与byte和short的建议一样,如果需要在大型浮点数数组中节省内存,请使用浮点而不是double。此数据类型不应用于精确值,如货币。为此,您将需要使用java.math.BigDecimal类。数字和字符串包括BigDecimal和Java平台提供的其他有用类

double:double数据类型是双精度64位IEEE 754浮点。它的值范围超出了本文讨论的范围,但在Java语言规范的浮点类型、格式和值部分中有详细说明。对于十进制值,此数据类型通常是默认选择。如上所述,此数据类型不应用于精确值,如货币

基本上,它们都是小数的持有者。它们的不同之处在于它们的精确程度。浮点数的大小只能是32位,而双精度浮点数的大小是64位。浮点数的精度可以高达5或6个浮点数,双精度浮点数的精度可以高达10个浮点数

基本上。。。双精度比浮点更能存储小数。。。但是占用了更多的空间


要回答您的问题,您可以将浮点添加到double,反之亦然。通常,结果将被转换成一个double,如果这是您想要的,您必须将其转换回float。

如果您想深入了解它,您应该说是的,由于值强制,这是可能的,但它为更严重的精度错误打开了大门,这些错误会无形地累积到编译器中。float的精度远远高于double,很遗憾,它是Java源代码中默认的文本浮点数类型。实际上,如果必须使用浮点,请确保在文字上使用d后缀,以确保H是双精度的

在敏感系统中,这些精度误差可能导致严重的危害甚至生命损失

浮点数很难正确使用,如果可能,应该避免使用。有一件非常明显的事情是,不要将货币表示为浮动货币或双精度货币,这通常是错误的。这可能导致真正的钱被有效地给予或从人们那里偷走

浮点优先双精度运算适用于近似计算和某些高性能科学计算应用。然而,了解精度损失特性仍然非常重要,特别是当产生的浮点值被输入到进一步的浮点计算中时

这更普遍地导致了数值计算,现在我真的走得更远了:

SAS在这方面有一份不错的文件:

你为什么不试试,你很快就会知道这是否可行。尽管我想,我们仍然不知道如何构建这样的程序。这只是我们教授的一个介绍性问题。但无论如何,谢谢你!:一旦我学会了构造一个,我就会尝试。上帝保佑!好吧!顺便说一句:类Main{public static void mainString[]args{double x=1;float y=2;x+=y;System.out.println x;}}。你的教授在问你有关浮点计算的复杂问题,而你从未编写过计算机程序?那太疯狂了。不要等你的教授,你自己开始编程吧。我不认为这叫做下溢,至少我从来没听说过它叫下溢。下溢是指当您执行Integer.MIN_值-1之类的操作并得到肯定答案时。@PaulBoddington下溢是指操作数的值因其相对值太小而被截断。看见