`
030710314
  • 浏览: 22388 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java Long型数值计算的自动截断

    博客分类:
  • JAVA
 
阅读更多

在处理Long 型时间值的计算过程中,被JAVA 狠狠的坑了一次,如下的程序:

long thisTime = 1380000000000;
long monthAgo = thisTime - 30 * 24 * 60 * 60 * 1000;

本以为,JAVA 会将后面计算的结果转换成 long 值后再与前面的计算,调试过程中发现,java 是先计算后面的数值,为 int 类型,结果超过了 int 类型,被截断了,然后再将这个截断的数值转换成 long 型,再与前面的 thisTime 计算。

 

     坑死了,这样计算出来的结果能对么,如果在计算的某一步中,觉得值会超过 long ,那么就需要在这一步之前将计算结果转为 long 型后再计算,因此修改后代码为:

long monthAgo = thisTime - 30 * 24 * 60 * 60 * 1000L;

 这样结果就正确了。

 

分享到:
评论

相关推荐

    Java数值类型

    Java中的数值类型主要包括整数型和浮点型。每种数值类型都有其特定的取值范围。 - **整数型**: - `byte`:占用8位,取值范围为-128到127。 - `short`:占用16位,取值范围为-32768到32767。 - `int`:占用32位...

    long 和 int 的相互转换.docx

    在处理数值计算时,我们可能需要在不同数据类型之间进行转换,特别是当涉及到long和int这种不同大小的整数类型时。本文将详细讲解如何在Java中进行long和int的相互转换。 一、long转int 在Java中,long型数据比int...

    谈谈Java中整数类型(short int long)的存储方式

    3. long类型:long是Java中最大的原始整数类型,它占用64位,其中1位为符号位,余下63位表示数值。这使得long的范围是-9223372036854775808(-2的63次方)到9223372036854775807(2的63次方减1)。其包装类为`java....

    Java中在时间戳计算的过程中遇到的数据溢出问题解决

    由于`30 * 24 * 60 * 60 * 1000`的计算是在`int`范围内完成的,超过`int.MAX_VALUE`后发生了溢出,结果被截断。因此,`startTime`可能比`endTime`还大,这就引发了错误。 为了解决这个问题,我们需要确保在计算时间...

    java位运算符之左移操作视频

    这些运算符在处理位级逻辑和数值计算时非常有用。 二、左移操作符() 左移操作符()将一个数的二进制表示向左移动指定的位数。左边移去的位用零填充,右边空出的位数则由零填充。这种操作相当于乘以2的幂次方。...

    Java数据类型转换代码.pdf

    例如,将大数值的`double`转换为`int`可能会导致数值截断。 总的来说,理解Java中的数据类型转换对于编写高效、安全的代码至关重要。在处理不同数据类型时,要确保理解转换规则,避免潜在的问题,如数据溢出、精度...

    Java基本数据类型.pdf

    Java语言中的基本数据类型是编程时最基础的元素,...了解Java的基本数据类型及其用法是学习Java编程的基础,它们在处理各种计算和逻辑控制中发挥着核心作用。熟练掌握这些类型及其特点,有助于编写高效、准确的代码。

    实验2 Java语言基础实验.doc

    Java 语言提供了八种基本数据类型,包括整数类型(byte、short、int、long)、浮点数类型(float、double)、字符类型(char)、布尔类型(boolean)。每种数据类型都有其特定的范围和默认值。 2. 字符串 Java 语言...

    java核心技术学习笔记

    1. **整型数据类型**:Java提供了四种整型类型,分别是byte(1字节)、short(2字节)、int(4字节)和long(8字节)。不同于C语言,Java中的整型数值的范围不依赖于运行平台。 2. **浮点数类型与精度**:Java中有...

    java代码-1·byte short int 在计算是会自动转化为int 2.float double 为近似值,byte short int 转化时可能会精确丢失 3.把大类型转化小的类型时可能会丢失

    在Java编程语言中,数值类型的数据处理是一项基本操作,尤其涉及到不同类型的运算和转换时,理解这些细节至关重要。...在分析和调试代码时,特别是涉及数值计算的部分,对这些知识的掌握将有助于找出问题的根源。

    JAVA取整计算器源码

    在JAVA中,整数类型主要包括`byte`, `short`, `int`, `long`。这些类型的变量可以进行基本的算术运算,如加法(+)、减法(-)、乘法(*)、除法(/)以及取余(%)。当涉及到整数除法时,需要注意的是,整数除法会...

    复习文档1

    溢出问题发生在计算超出了数据类型能表示的最大值时,如题目中的`long l = 100000 * 100000 * 100000`会导致结果为负数,这是因为计算过程中超过了`int`的范围。解决办法是确保乘法运算中的至少一个数字是`long`类型...

    java大数(以数组形式保存整数,实现整数加减)

    由于Java中的`int`和`long`等内置类型无法满足大数的需求,我们可以选择使用`int`数组来保存每一位数字。数组的每个元素代表大数的一位,高位在前,低位在后,这样符合我们习惯的数值表示方式。 ```java class ...

    Java语言的26个细节

    Java中的数据类型在进行运算时遵循自动提升规则:`byte` -> `short` -> `int` -> `long` -> `float` -> `double`,以及 `char` -> `int`。这一规则确保了数据在计算过程中的精度不会无故降低。然而,当涉及较大的...

    2.数据类型与运算符1

    接下来,浮点型变量用于表示带有小数的数值。Java提供了两种浮点类型:双精度浮点型(double)和单精度浮点型(float)。double类型通常默认使用,占用8个字节,遵循IEEE 754标准,可能存在精度误差,但能表示的范围...

    java代码-Conversion

    Java是一种强类型语言,它有多种内置数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)以及布尔型(boolean)。在编写Java代码时,我们可能需要在这些数据类型之间进行转换,...

Global site tag (gtag.js) - Google Analytics