java省地区三级浮动,在java中正确声明浮动和长类型?(declaring floating and long types correctly in java?)...

在java中正确声明浮动和长类型?(declaring floating and long types correctly in java?)

所以我理解这一点,如果我声明一个长变量,我需要在数字末尾添加一个L。

long x = 123L;

与float类型相同,我需要在变量的末尾添加一个F.

float x = 1.1F;

但我想知道为什么它在这两种情况下做得与众不同? 我的意思是如果我声明一个int或任何其他数据类型,它只是简单地完成

int x = 1;

为什么声明这两种数据类型是在某种情况下完成的(对于long和float类型)。 我知道它是这样做的,我只想了解为什么这样做?

So I understand the point that if I am declaring a long variable I need to add a L in the end of number.

long x = 123L;

Same with float type also, I need to add a F at the end of variable.

float x = 1.1F;

but I was wondering why its done differently in these two cases? I mean If i am declaring a int or any other data-type its done simply

int x = 1;

why declaration of these two data-types is done in a certain (for long and float types). I know its done this way I just want to understand why this is done in this way?

原文:https://stackoverflow.com/questions/24480083

更新时间:2020-02-23 22:44

最满意答案

不同之处在于字面值 。 根据Primitive值 ,文字数值属于int和double类型。

如果整数文字后缀为ASCII字母L或l (ell),则整数文字的长度为long ; 否则它是int类型( §4.2.1 )

(......)

如果浮点文字后缀为ASCII字母F或f ,则浮点文字的类型为float ; 否则其类型为double ,并且可以选择以ASCII字母D或d ( §4.2.3 )为后缀。

The difference is in literal values. According to Primitive values, literal numeric values belong for int and double types.

An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1)

(...)

A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d (§4.2.3).

2014-06-29

相关问答

不,Java没有这些内置的,这是一个原因。 使用可变类型是危险的,因为它们很容易被滥用。 另外,实现它真的很容易。 例如,commons-lang有一个MutableInt 。 No, Java doesn't have these built in. And that is for a reason. Using mutable types is dangerous, as they can easily be misused. Additionally, it is really easy t

...

Long myUserId = 1; // error

不起作用,因为1是一个int。 它将被自动装箱: Integer myUserId = 1; // ok

它也将扩大到: long myUserId = 1; // also ok

但不是两个。 所以,是的,你必须说 Long myUserId = 1L;

这是一个long ,可以自动进入Long 。 至于为什么它以这种方式工作(或者说在这种情况下不起作用):很可能因为后来添加了自动装箱(在Java5中),并且必

...

如何将Java长对象转换为C原语? 调用其longValue()方法。 请注意,您需要首先测试对象是否为null ,否则准备处理NullPointerException (就像在Java端使用自动(un)装箱时一样)。 另请注意,在可能的情况下,在Java端处理这样的事情比在JNI中处理更容易。 在您提供的示例中,这似乎不可能,但也许您可以重构,以便本机方法做得更少,因此不需要整个MyEntity作为参数。 How can I go about converting a Java Long Obj

...

变量的类型和文字的类型之间存在区别。 在这种情况下: long l = 890L;

你有一个long类型的变量和一个long类型的文字。 当然这很有效。 在这种情况下: long l = 890;

你有一个long类型的变量和一个int类型的文字。 整数会自动提升为一个整数(因为它适合),这也适用。 这与此相同: int i = 890;

long l = i;

请注意,您不能这样做: int i = 890L;

这是因为虽然在这种情况下890足够小以适合整数,但是没有将longs自动转换

...

当您可以证明结果适用于您的应用程序时,您可以在Java或其他语言中使用浮点类型。 使用BigDecimal本身并不能解决这个问题。 例如,假设一个银行账户包含87.34美元,并且您必须在一年内增加利息,年利率为2.37%。 首先,BigDecimal将不会正确计算每月利率,因为您必须将2.37%除以12,并且2.37 / 12(或.0237 / 12)不能用十进制精确表示。 其次,即使BigDecimal确实正确计算了每月利率,并且正确计算了$ 87.34的利息,您可能仍然需要将该金额整理为若干美

...

您的问题是Scanner.nextInt()不会读到下一行。 所以你也需要发出nextLine( )调用并丢弃它们的内容: public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.println("Enter film's name");

String a = scan.nextLine();

System.out.println("What

...

所以看一下文档(之前从未使用过Python),看起来time.time()方法返回了自纪元以来的秒数 ,而Java Date对象需要从其构造函数中的纪元开始的毫秒数 。 因此,你需要做一些花哨的数学运算才能让双人成长。 从我刚刚阅读的一些Python文档来看,似乎更容易将Python代码中的秒转换为毫秒,并将结果作为long发送给其余服务。 根据您的准确程度,您可以将time.time()结果乘以1000得到毫秒,然后绕过其余部分以删除浮点数。 So looking at the document

...

不同之处在于字面值 。 根据Primitive值 ,文字数值属于int和double类型。 从Java语言规范。 第3章词汇结构。 3.10文字 : 如果整数文字后缀为ASCII字母L或l (ell),则整数文字的长度为long ; 否则它是int类型( §4.2.1 ) (......) 如果浮点文字后缀为ASCII字母F或f ,则浮点文字的类型为float ; 否则其类型为double ,并且可以选择以ASCII字母D或d ( §4.2.3 )为后缀。 The difference is in

...

没有任何后缀的数字常量具有默认类型。 如果它们是整数(即它们没有浮点),则默认类型为int 。 如果它们具有浮点,则默认类型为double 。 因此,没有L后缀(表示long文字)的整数常量不能大于Integer.MAX_VALUE ,并且如果没有显式Integer.MAX_VALUE ,则不能将double常量10.1赋值给float变量。 另一方面, int 10可以分配给float变量,以及float 10.1f 。 Numeric constants without any postfix

...

Java中浮点值的使用实际上存在一些差异。 但不是你观察到的:两种语言中0.15 + 0.15都不是0.3(因为0.15也不是0.15)。 通常,差异不在编译器中,而在于运行时计算的完成方式。 在C ++中,它显然都依赖于平台。 并且对于编译器选项,使用处理器的一些浮点单元等等...... 在Java中,有两种模式可用于浮点计算。 第一种是默认模式,它允许JVM(自1.2起)在计算过程中使用更高的精度。 因此,如果您添加两个浮点值(例如32位),则中间结果可以以60位精度存储 - 但这是高度平台依

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值