首页 > 编程知识 正文

java除法运算保留整数,c语言两个float相除

时间:2023-05-04 03:50:45 阅读:160619 作者:1068

文章目录结论两个int变量除法结果的精度问题Java其他基本类型的运算规则数值记忆规则的扩展

结论

不能将两个int变量直接除法。 会失去精度。

推荐:将任一int变量类型强制转换为小数即可。

两个int变量除法结果的精度问题代码如下:

如果public class test { publicstaticvoidmain (string [ ] args )//的两个操作数都是int变量,则运算结果也为intsystem.out.println )/2 ); //2 //将任一操作数转换为浮点数将导致int和double运算,结果也将变为double。 system.out.println(5/2.0; //2.5system.out.println(5.0/2 ); //2.5 //模拟int/int int a=5; int b=2; int result=a/b; system.out.println(result ); //2 }}两种int类型的加减、乘法没有问题。 但是除法:

两个int进行除法运算,结果保持int类型。

因此,如5/2所示,结果为2.5,小数部分仍被省略(int仅用于存储整数,没有存储浮点数的机制)。

问题延长的季节很少。

当多个运算分层嵌套时,最内层的运算一般不用四舍五入,而是用分数表示。

执行运算到最外层,然后四舍五入到最终的运算结果,可以减少误差。

Java其他基本类型的运算规则数字存储规则4种整数: byte、short、int、long

两种小数: float,double

如果在代码中写入整数数字常量(如123 ),则该类型缺省为int。

要将整数常量类型指定为long,必须使用l或l后缀。 例如:

//long a1=12345678901111; //错误:太大整数long a2=12345678901111L; 如果写小数,则类型默认为双精度。

要将小数字常量类型指定为浮点,请使用后缀f或f。 例如:

//float f1=2.34; //错误:不兼容的类型:从双精度转换为浮点可能会丢失浮点F2=2.34 f; 那么,在不同类型的变量之间进行运算,运算结果的类型怎么样?

整数之间

byte、short、int这三种整数间运算的结果都是int型。

证明:短a=1; 短b=2; //short c=a b; //错误:不兼容的类型:在从int转换为short时可能会丢失。 两个整数常数的运算结果,默认为int型。

long的范围比int大。

long参加其他三个整数类型和运算,结果为long。向上提升(范围)

提高范围是为了拥有足够多的空间存储结果的数据。

小数之间请不要测试。 已知。

浮点数类型默认为双精度

结果的存储范围提高了。

那么,如下。

浮点和浮点、浮点和双精度、双精度和双精度之间的运算最终为双精度。

整数和小数的混合小数也称为浮点数,在计算机中的存储很复杂,有三个部分: SEM。

S sign码位

E exponent指数位

m

详情百度关键词计算机浮点数存储机构。

总之有两点:

-计算机中不能存储完全无理数。 所谓存储,是指浮点数全部为确定精度范围内的近似值

-浮点数存储,需要比整数更多的空间。

注意第2点:浮点数比整数使用更多的存储空间

基于以前的:两个数值常数运算,结果保证范围足够大,为向上提升范围

那么,如下。

当一个整数和一个浮点数运算,其结果必然为浮点数。

这也是5/2的结果是2

5/2.0的结果是2.5的原因。

在应用方面,要特别注意一些基本方法(计算模块)的实现层代码。

如果有两个int变量进行除法计算,一定对其中一个int进行类型的强制转换。

例如:

//a,b是两个int类型的参数int a=5; int b=2; //double result=a/b; //错误doubleresult=a//(double ) b ); //如果不将任何运算数强制转换为类型,运算的早期会失去精度,从而产生蝴蝶效应。

扩展JavaScript是弱类型语言,使用var (或let,const )声明变量。 在JS中,5/2的结果一定是2.5。 因为JS的数值都是64位浮点数

那么,JS其实存整数是浪费空间。

但是,在JS中,数值运算其实有更大的精度问题。 不仅仅是数值运算。 例如:

3.5 - 3.40.10000000000000009这是因为JS作者Brendan Eich在实现JS时太短(10天),所以语言设计的一些缺陷|特色:

了不起的笑容:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。