精华内容
下载资源
问答
  • 如何在Java中将double转换为int

    千次阅读 2021-03-09 10:54:46
    在本文中,我们将看到如何将double转换为int。 在Java编程中,您将有一个double原语值(例如82.14),但是要执行进一步的操作,您需要一个int值(例如82),所以让我们看看如何在Java中将double转换为int。 您可以...

    在本文中,我们将看到如何将double转换为int。

    在Java编程中,您将有一个double原语值(例如82.14),但是要执行进一步的操作,您需要一个int值(例如82),所以让我们看看如何在Java中将double转换为int。

    您可以通过三种方式将double转换为int。我将在下面列出所有内容,然后我们将一一列出。

    1,将double转换为int —使用类型转换
    2,将double转换为int —使用 Math.round()
    3,将double转换为int —使用 Double.IntValue()

    1.将double转换为int —使用类型转换

    我们知道double是64位原始值,而int是32位原始值。因此,要将double转换为int,我们可以将double值下转换为int。

    我在下面给出了一个简单的示例,该示例显示了使用类型转换将double转换为int的情况。

    /**
     * 一个使用typecasting将double转换为int的Java程序 
     **/
    public class DoubleToIntUsingTypecasting{
         public static void main(String []args){
            double doubleValue = 82.14; // 82.14
            System.out.println("doubleValue: "+doubleValue);
            //typecase double to int
            int intValue = (int) doubleValue; // 82
            System.out.println("intValue: "+intValue);
         }
    }
    

    输出:

    doubleValue:82.14
    整数值:82
    

    类型转换的问题是它将截断小数点后的值。它不会四舍五入。

    在82.14的情况下,我们将得到一个int值82,看起来不错。但是,当我们有一个像82.99这样的双精度值时,我们只会得到82,而失去了0.99,即〜1。

    它可能会在您的计算中产生问题。

    对于82.99,应将其四舍五入为83,然后转换为int。

    类型转换是不可能的,但是我们的下一个解决方案可以实现它。

    2.将double转换为int —使用 Math.round()

    Math.round()方法会将浮点值四舍五入到最接近的long值。然后我们可以将其转换为int类型。

    我在下面给出了一个简单的Java程序,该程序显示了如何使用Math.round()方法将double转换为int 。

    / ** 
     *使用java将double转换为int的Java程序 
     * Math.round()方法 
     ** /
     public class DoubleToIntUsingRoundMethod{
         public static void main(String []args){
            // 情况1
            double doubleValue = 82.14; // 82.14
            System.out.println("doubleValue: "+doubleValue);
            //将case双精度型转换为int
            int intValue = (int) Math.round(doubleValue); // 82
            System.out.println("intValue: "+intValue);
            System.out.println();
            // 情况2
            double nextDoubleValue = 82.99; // 
            System.out.println("nextDoubleValue: "+nextDoubleValue);
            // Math.round(nextDoubleValue)返回long值
            //将case的类型转换为int
            int nextIntValue = (int) Math.round(nextDoubleValue);    // 83
            System.out.println("nextIntValue: "+nextIntValue);              
         }
    }
    

    输出:

    doubleValue:82.14
    整数值:82
    nextDoubleValue:82.99
    nextIntValue:83
    

    3.将double转换为int —使用 Double.IntValue()

    通过这种方式,我们将double原语值转换为Doublewrapper类,然后可以使用wrapper类的intValue()方法Double。

    此方法不会在将值转换为int值之前将其四舍五入。它将删除小数点后的数字。

    我在下面给出了一个简单的Java程序,该程序显示了如何使用Double.IntValue()方法将double转换为int 。

    / **
     * 
     *使用java将double转换为int的Java程序 
     * Double.intValue()方法  
     * 
     ** /
     public class DoubleToIntUsingIntValueMethod{
         public static void main(String []args){
            double doubleValue = 82.14; // 82.14
            System.out.println("doubleValue: "+doubleValue);
            //创建Double wrapper对象
            Double doubleValueObject = new Double(doubleValue);
            //将case双精度型转换为int
            int intValue = doubleValueObject.intValue(); // 82
            System.out.println("intValue: "+intValue);
         }
    }
    

    输出:

    doubleValue:82.14
    整数值:82
    

    结论

    我们可以使用下面给出的三种方式在java中将double转换为int。

    1.使用doublecasting将double转换为int

    在这种方法中,我们将double值强制转换为int,如下所示:

    int  intValue  =int)数学。舍入(doubleValue);
    

    但是这样,我们将失去小数点后的值。在将double转换为int之前,它将不进行舍入。

    2.将double转换为int —使用 Math.round()

    这样,我们将该Math.round()方法用于舍入目的。

    Math.round() 方法将double值四舍五入到最接近的long,然后可以按如下所示将long类型转换为int。

    int  nextIntValue  =int)数学。回合(nextDoubleValue);
    

    3.将double转换为int —使用 Double.IntValue()

    这样,我们将double值转换为Double包装器类,然后使用该Double.IntValue()方法获取int值。

    //创建Double wrapper对象
    Double  doubleValueObject  = 新 Double(doubleValue);
    //将case双精度型转换为int
    int  intValue  =  doubleValueObject。intValue();
    

    这样,我们还将丢失小数点后的数字。

    因此,这就是我们在Java中将double转换为int的方式。

    零基础学习Java编程技术,欢迎加入我的十年Java学习园地

    展开全文
  • double转换为int以及浮点型相加损失精度问题 最近在做支付相关模块的业务,数据库字段却使用的是double类型,其实也行,只要计算不在sql语句中进行,也是没有问题的。 预先的类属性设置的是Double...

    double转换为int以及浮点型相加损失精度问题

    最近在做支付相关模块的业务,数据库字段却使用的是double类型,其实也行,只要计算不在sql语句中进行,也是没有问题的。

    预先的类属性设置的是Double类型,自己算的时候发现小数相加会出现损失精度的情况

    如下情形

        @Test
        public void testDouble(){
            Double [] arr = {39.9d,50d,198d,39.9d};
            Double verify = 0d;
            for (Double aDouble : arr) {
                verify += aDouble ;
            }
            System.out.println(verify);
        }

    输出的结果是:327.79999999999995  理应为:328

    待着疑惑试了下js

    一看是一个效果,精度都会缺失。百度了下,解释如下

    产生原因:
        计算机并不能识别除了二进制数据以外的任何数据,无论我们使用何种编程语言,在何种编译环境下工作,都要先把源程序翻译成二进制的机器码后才能被计算机识别。
        而在存储浮点型数据时,会分为三部分进行存储:
    1.         符号位(Sign): 0代表正,1代表为负
    2.         指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
    3.         尾数部分(Mantissa):尾数部分
        其中前两位分别为实数符号位和指数符号位,于是存储结构实际为如下:

     

                        31                  30            29----23        22----0         

                   实数符号位    指数符号位    指数位      有效数位

     

           但是,在将十进制浮点数转换为二进制浮点数时,小数的二进制有时也是不可能精确的,就如同十进制不能准确表示1/3,二进制也无法准确表示1/10,而double类型存储尾数部分最多只能存储52位,于是,计算机在存储该浮点型数据时,便出现了精度丢失。

      例如,11.9的内存存储大约为:1011. 1110011001100110011001100...

           而在进行浮点类数据计算的时候,浮点参与计算,会左移或右移n位,直到小数点移动到第一个有效数字的右边。于是11.9在转化为二进制后 小数点左移3位,就得到1. 011 11100110011001100110(精度丢失2)

           于是最终浮点型运算出现了精度丢失误差。

     解决方式,java中可以使用 BigDecimal 来解决

        @Test
        public void test3(){
            System.out.println(0.11+2001299.32);//非精确的输出
            BigDecimal bigDecimal1 = new BigDecimal(Double.toString(0.11));
            BigDecimal bigDecimal2 = new BigDecimal(Double.toString(2001299.32));
            System.out.println(bigDecimal1.add(bigDecimal2));//精确的输出
        }

    这种方式可以解决,并且很完美,但是还有一种方式比较容易些,毕竟是金额,小数位只有两位,可以先将其扩大100倍,再进行计算,计算完毕之后再除100,也可以解决(这么不要脸的方式也只有我这么low的程序员使用了)

    在计算的过程总遇到double转int的情况,总结了下实现的方式

        Double d = 1.7d;
    
        @Test
        public void test1(){
            // 这样会报错,因为double转换为字符串之后有.
            System.out.println(Integer.parseInt(d.toString()));
        }
    
        @Test
        public void test2_1(){
            // double 类型可以直接转为int类型
            double dd = 1.1;
            int ddd = (int)dd;
            System.out.println(ddd);
        }
    
        @Test
        public void test2_2(){
            // 可以通过强转进行转换,Double是包装类,不能直接进行强转,可以拆箱之后再次强转。
            int aa = (int)(Double.parseDouble(d.toString()));
            System.out.println(aa);
        }
    
        @Test
        public void test3(){
            // 这种方式最为简单
            System.out.println(d.intValue());
        }
    
        @Test
        public void test4(){
            DecimalFormat format1 = new DecimalFormat("#");
            String s = format1.format(d);
            System.out.println(s);
        }
    
        @Test
        public void test5(){
            DecimalFormat format1 = new DecimalFormat("#.#");
            String s = format1.format(1.35);
            System.out.println(s);
        }
    
        @Test
        public void test6(){
            DecimalFormat format1 = new DecimalFormat("0.000");
            String s = format1.format(1.35);
            System.out.println(s);
        }

     

    DecimalFormat 要四舍五入需要加上 setRoundingMode(RoundingMode.HALF_UP); 网上是这么说的,但是自己测试默认就会四舍五入

     

    特殊字符说明
    “0” 指定位置不存在数字则显示为0 123.123 ->0000.0000 ->0123.1230
    “#” 指定位置不存在数字则不显示 123.123 -> ####.#### ->123.123
    “.” 小数点
    “%” 会将结果数字乘以100 后面再加上% 123.123 ->#.00->1.3212%

     

     

     嗯,就这么个坑了。

     

     

     

     

     

     

     

     

     

     

    posted @ 2019-03-01 15:27 陈灬大灬海 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • Given a double type of variable, we have to convert it... 给定双重类型的变量,我们必须在C#中将其转换为整数。 Syntax: 句法: int_variable = (int)double_variable; Example: 例: Input: double...

    Given a double type of variable, we have to convert it into an integer in C#.

    给定双重类型的变量,我们必须在C#中将其转换为整数。

    Syntax:

    句法:

        int_variable = (int)double_variable;
    
    

    Example:

    例:

        Input:
        double a = 123456.789;
        int b = 0;
    
        //type conversion
        b = (int)a;
    
        Output:
        a: 123456.789
        b: 123456
    
    

    C# code for type conversion from double to int

    用于将类型从double转换为int的C#代码

    // C# program for type conversion from double to int 
    using System;
    using System.IO;
    using System.Text;
    
    namespace IncludeHelp
    {
        class Test
        {
            // Main Method 
            static void Main(string[] args)
            {
                double a = 123456.789;
                int b = 0;
    
                //type conversion
                b = (int)a;
    
                Console.WriteLine("value of a: {0}", a);
                Console.WriteLine("value of b: {0}", b);
    
                //hit ENTER to exit the program
                Console.ReadLine();
            }
        }
    }
    
    

    Output

    输出量

    value of a: 123456.789
    value of b: 123456
    
    
    

    翻译自: https://www.includehelp.com/dot-net/type-conversion-from-double-to-int.aspx

    展开全文
  • 今天在计算数据的时候,我用c++算数的时候出现了点问题,如下图,就是double 类型的d取值1,然后N整型20,densityC宏定义的0.5, 结果算出来1.0\*20\*0.5得出数值9???这计算机不拿我当人呢,请问大佬们...
  • Math.Round(double)作四舍五入,如果 a 在两个整数的中间,其中之一按定义是偶数,另一个是奇数,则返回偶数。 (int) 则作截取。 转载于:https://www.cnblogs.com/liubing/archive/2005/01/14/92061.html...
    Math.Round(double)作四舍五入,如果 a 在两个整数的中间,其中之一按定义是偶数,另一个是奇数,则返回偶数。
    (int) 则作截取。emdgust.gif

    转载于:https://www.cnblogs.com/liubing/archive/2005/01/14/92061.html

    展开全文
  • 首先用el表达式获取页面循环打印的值     然后给body 中加入 onload事件 给<td>加不行 红色框内就是为了调试时候在页面F12 console中获取到值 方便看 只用html()方法获取或者输出值.....
  • double转换为int

    万次阅读 2016-09-09 10:26:06
    double转换为int
  • C#Convert.ToInt32(double)方法 (C# Convert.ToInt32(double) Method) Convert.ToInt32(double) Method is used to convert a specific double value (a double precision floating point number) to its ...
  • float double在kernel转换为int 目前大多数CPU都支持浮点运算单元,但是对于低端的嵌入式处理器可能就会去掉浮点协处理器。 在调试一个sensor就遇到这个问题,由于这个处理器是32位arm,比较低端,没有浮点运算,而...
  • double隐式转换int

    2019-09-26 01:55:03
    double型可以强制转换int型,即使不加强制转换,也会隐式转换,只是转换结果会丢弃小数部分,如:double d=1.6;int i;i=d ; //隐式转换,i结果1i=(int)d ; //强制转换,i结果1但,如果double变量数据,超过...
  • Java类型转换: intdouble

    万次阅读 2019-02-23 16:52:10
    由于double的范围比int数据类型大,所以当int值被赋给double时,java会自动将int转换为double。 隐式转换:由于double数据类型的范围和内存大小都比int大,因此从intdouble的转换是隐式的。并不需要像double ...
  • double a=Double.valueOf(m_textstring).doubleValue();//String转换为double double a = Double.parseDouble("1");//String转换为double ...//String转换为int int Int=Integer.parseInt(st
  • 不同数据类型间的转换,如:将int类型转换为string类型 为什么需要类型转换? 从控制台接收到的用户输入的内容都是string类型,如果要进行计算,就需要将接收到的内容转换成数值类型 什么是隐式转换?如下图 ...
  • Qt中 int ,float ,double转换为QString

    千次阅读 2018-01-03 17:33:30
    Qt中 int ,float ,double转换为QString
  • double是64位,int是32位,int最大值2^31-1=2147483647。所以当double大于2147483647时,强转为int型时值 2147483647 *****有何问题,还望大神指出*****
  • double k = 12345; System.out.println(k); //输出: 12345.0 我为了不让输出的数最后加.0,下面我先将它转换成整型,然后...int n = (int)m; System.out.println(m==n ? n : m); //什么输出的还是12345.0求解。
  • char转换为doubleint转换为char

    千次阅读 2008-01-23 15:03:00
    char转换为doublechar* chaValue = "116.397380;39.908395";double x = 0.0; double y = 0.0; sscanf(chaValue, "%lf;%lf", &x, &y);int转换为charint m_btCommPort = 1; int m_dwBaudrate = 4800;CString ...
  • 在做除法运算的时候,会自动舍弃小数点后的数字,所以导致结果很不精确,然后Swift好像又不能直接用类似于(Double)这样的强制类型转换(as Double 也不行),所以只能想了个奇葩的方法将Int64转换为Double ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,600
精华内容 2,240
关键字:

double转换为int