java浮点数常量是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java浮点数常量是啥相关的知识,希望对你有一定的参考价值。
与表示整数的整型不同,浮点型代表的是实数,其实就是包含小数的部分。我们也知道现实世界中是由很多复杂的数据的,所以需要这种表示实数的数据类型的支持。一、浮点型常量 Java的实常数有两种表示形式:十进制数形式,由数字和小数点组成,且必须有小数点,如0.123, .123, 123. ,123.0 。 2.科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。 实常数在机器中占64位,具有double型的值。对于float型的值,则要在数字后加f或F,如12.3F,它在机器中占32位,且表示精度较低。
二、浮点型变量 浮点型变量的类型有float和double两种。数据类型所占位数的范围: float 32位 3.4e-038~3.4e+038 ; double 64位 1.7e-308~1.7e+308 ; 双精度类型double比单精度类型float具有更高的精度,和更大的表示范围,常常用于科学计算等高精度场合。
三、浮点型变量定义举例 float f; //指定变量f为float型 double d; //指定变量d为double型 与C、C++不同,Java中没有无符号型整数,而且明确规定了整型和浮点型数据所占的内存字节数,这样就保证了安全性、鲁棒性和平台无关性 参考技术A 所谓浮点数你可以理解为小数点可以精确到很多很多的数...常量你可以理解为,刚开始就定义了一个变量的值,而且是定死了,不允许修改...
2个加起来你应该能总结了把本回答被提问者采纳
使用浮点数和双精度时,c 中的 -0.0000 是啥?
【中文标题】使用浮点数和双精度时,c 中的 -0.0000 是啥?【英文标题】:what is -0.0000 in c when using floats and double?使用浮点数和双精度时,c 中的 -0.0000 是什么? 【发布时间】:2013-02-16 23:40:20 【问题描述】:#include <stdio.h>
#include <stdlib.h>
#define answer 3.141593
void main(int argc, char **argv)
float a = (argc - 2)?: strtod(argv[1], 0);
printf("double = %lf ,float = %f", a-answer , a-answer);
当我这样运行它时:
./a.out 3.141593
输出是
double = -0.000000 ,float = -0.000000
为什么是-0.00000
?我怎样才能让它输出0.000000
?
我怎样才能使a == answer
?
如果使用 2 的补码,怎么会有 -0 值?
【问题讨论】:
en.wikipedia.org/wiki/Signed_zero 通过将a
的类型固定为double
。
@joe:结果不是负零。只是打印的地方太少了。
谢谢!这只是一个推测性的***链接。我会把它留在那里作为其他人的教训。
注意:?:
是 GCC 扩展
【参考方案1】:
浮点数不使用 2 的补码。它们有符号、指数和尾数,而你的数字只有零和符号,或者更可能的是,你有一些像 -1.0e-15 这样的数字,打印为 -0.0000。尝试 %e 而不是 %f。微小的差异是由于无法在有限精度数据类型中存储具有无限精度的数字(发生了一些舍入),并且当您将 double 更改为 float 时,必须进行额外的舍入。 (请记住,3.141593 是二进制表示的无限周期数,这实际上取决于该数字存储在哪种类型中)
【讨论】:
以上是关于java浮点数常量是啥的主要内容,如果未能解决你的问题,请参考以下文章