两个int数据相除怎么得到double型数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个int数据相除怎么得到double型数据相关的知识,希望对你有一定的参考价值。
两个Int数据,假设是1和10,相除后结果为double数据,可结果是0.000000
怎么才能让它得0.100000?
int x=10,y=3;
double z;
z = x / (y*1.0);
两个int型的数据相除结果会默认为int型,如果其中有一个为double型结果就为double型,
做强制类型转换或将其中一个数乘以1.0得到double型。 参考技术A 两个数都先进行强制类型转换,然后进行相除..
可以像楼上那样a=(x*1.0)/(y*1.0);
也可以double a = (double)x/(double)y; 参考技术B 。。int /int 之后她会自动取整
double a=1.00,b=3.00
double c=a/c 参考技术C 强制类型转换?什么语言?
(double)1/10 参考技术D a=(x*1.0)/(y*1.0);
第29题 两个整型相除
题目如下:
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
分析:
整型相除,不使用乘除法的话,只能使用减法较为简单了。即循环使用被减数去减减数。但如果被减数很大,减数很小,则循环次数太大,效率过低。因此可以对减数进行放大,以逼近被减数。放大倍数设为2,即左移位操作。
注意:移位前先将整型转为long类型,否则移位可能溢出。
代码如下:
package T029; public class DivideTwoIntegers { public static void main(String[] args) { //divide(-2147483648,-1) System.out.println(divide(-2147483648,-2)); } public static int divide(int dividend, int divisor) { long isNegative = (dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0) ? -1 : 1; long absDividend = Math.abs((long) dividend); long absDivisor = Math.abs((long) divisor); long result = 0; while(absDividend >= absDivisor){ long tmp = absDivisor, count = 1; while(tmp <= absDividend){ tmp <<= 1; count <<= 1; } result += count >> 1; absDividend -= tmp >> 1; } result = result*isNegative; if(result>Integer.MAX_VALUE || result <Integer.MIN_VALUE) return Integer.MAX_VALUE; return (int) result; } }
以上是关于两个int数据相除怎么得到double型数据的主要内容,如果未能解决你的问题,请参考以下文章
在java中的double和float类型数据相除为啥可以除以零