首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >java浮点精度( 0.1+0.2+...+1.00 ..or.1.00+0.99+0.98+...+0.1 )

java浮点精度( 0.1+0.2+...+1.00 ..or.1.00+0.99+0.98+...+0.1 )
EN

Stack Overflow用户
提问于 2015-01-18 18:41:46
回答 4查看 1.1K关注 0票数 2

我正在准备考试,我解决了这个问题

添加0.1+0.2+...+1.00 ..or..。1.00+0.99+0.98+...+0.1

在Java中,为了获得更高的精度,应该按照哪个顺序来添加数字?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-18 19:10:20

任何COBOL程序员都可以立即回答这个问题。

问题的关键是,如果你先加大的数字,当你加入小的数字时,你就失去了精确性。先加小数。

票数 5
EN

Stack Overflow用户

发布于 2015-01-19 07:34:23

有一个结果表明,如果按递增顺序添加一个正数序列,则可以得到一个更好的最坏情况下的误差界。这个结果并不意味着,对于给定的正数序列,通过按递增顺序添加数字,可以得到较小的误差。

例如:

代码语言:javascript
运行
AI代码解释
复制
int main() {
  float f = 0, g = 1;
  for (int i = 1; i <= 99; i++) {
    char buf[42];
    float ff;
    sprintf(buf, "0.%02i", i);
    sscanf(buf, "%f", &ff);
    f += ff;
    sprintf(buf, "0.%02i", 100-i);
    sscanf(buf, "%f", &ff);
    g += ff;
  }
  f += 1;
  printf("%a %a\n", f, g);
}

版画

代码语言:javascript
运行
AI代码解释
复制
0x1.940002p+5 0x1.93fffep+5

所讨论的100个floats的精确和(可以通过将fg声明为double (但将ff作为float)计算)是0x1.93ffffff8p+5,表示按递减顺序求和的数字在这里获胜。

票数 2
EN

Stack Overflow用户

发布于 2015-01-18 18:52:54

由于这是一个算术级数,所以它的和可以按以下方式计算

代码语言:javascript
运行
AI代码解释
复制
Sn = n * (a1 + an) / 2

Sn ... sum
n  ... number of elements
a1 ... first element
an ... last element

当你去掉大部分数字时,这似乎是最好的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28017226

复制
相关文章
C语言(浮点精度)
关于C语言的浮点数精度问题,很多人存在误解,他们往往认为精度指的是float、double和long double三种数据类型,这是片面的。
用户2617681
2019/08/08
1.8K0
C语言(浮点精度)
Python 浮点数精度
python 默认使用的是 double 精度, 浮点数在计算机中都是以二进制保存,当有无法精确表示的二进制数字时便会产生截断, 这就导致了在有限精度下,电脑为自己把精度范围外的小数“掐掉”,导致结果不准确。
为为为什么
2023/05/01
1.9K0
java float double精度为什么会丢失?浅谈java的浮点数精度问题
由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解:
哲洛不闹
2018/09/19
2.6K0
java float double精度为什么会丢失?浅谈java的浮点数精度问题
java float double精度为什么会丢失?浅谈java的浮点数精度问题
由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解:
哲洛不闹
2018/09/18
1.5K0
java float double精度为什么会丢失?浅谈java的浮点数精度问题
java float double精度为什么会丢失?浅谈java的浮点数精度问题
由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解:
哲洛不闹
2018/09/14
2.1K0
java float double精度为什么会丢失?浅谈java的浮点数精度问题
浮点数运算丢失精度
今天碰到了这样一个情况, 使我又去翻阅了原来课本, 在Pthon中如果输入下面这段程序:
烟草的香味
2021/01/06
9770
浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
例如在 chrome js console 中: alert(0.7+0.1); //输出0.7999999999999999 之前自己答的不是满意(对 陈嘉栋的回答 还是满意的),想对这个问题做个深入浅出的总结
IMWeb前端团队
2019/12/04
3.4K0
浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
之前自己答的不是满意(对 陈嘉栋的回答 还是满意的),想对这个问题做个深入浅出的总结
周陆军
2019/05/17
3K0
浮点数的运算精度丢失
1/5,使用小数表示为0.2,但是1/3,使用小数表示就是一个无限循环小数:0.3333333, 也就是说,分数的 1/3+1/3=2/3,但如果使用小数:0.3333+0.3333=0.6666, 结果只会无限接近2/3,而不会等于2/3
烟草的香味
2019/10/29
2K0
Python中浮点数精度处理
Python中,浮点数运算,经常会碰到如下情况: 出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确。 比如说: 0.1是十进制,转化为二进制后它是个无限循环的数: 0.
py3study
2020/01/06
1.7K0
小朋友学C语言(4):单精度浮点数与双精度浮点数
上节课 简单介绍了浮点数。计算机程序中的浮点数分为单精度浮点数和双精度浮点数。 单精度和双精度精确的范围不一样。 计算机里的最基本的存储单位用位(bit)来表示。bit只能用来存储0或1。 稍大一点的单位是字节(Byte,简写为B)。 再大一级的是千字节(kilo Bytes),用k来表示。 再大一级的单位是兆字节(Mega Bytes),用M来表示。一张照片的大小通常为1~3M。 再大一级的单位为G。一部高清电影的大小通常为1~2G。 再大一级的单位为T。 换算关系为: 1B = 8bit 1k =
海天一树
2018/04/17
3K0
小朋友学C语言(4):单精度浮点数与双精度浮点数
js高精度浮点数运算
贴代码:  // 自定义高精度浮点数运算 // 对象格式写法 var float_calculator={ /** * 1.记录两个运算数小数点后的位数 * 2.将其转化为整数类型进行运算 * 3.移动小数点的位置 **/ add:function(arg1,arg2){ var r1,r2,m; try{ //取小数位长度 r1=arg1.toString().split(".")[1].length; r2=arg2.toString().split(".")
lonelydawn
2018/02/09
6.5K0
js高精度浮点数运算
浮点数比较的精度问题
如果变量 a , b 换 0.75 , 0.5 可以看出运行出 c == 1.25 ,说明浮点数运算是不稳定的。
C语言与CPP编程
2020/12/02
1.7K0
浮点数比较的精度问题
C语言浮点型精度缺失解决
比如我们不可以直接把两个浮点型用==和!= 比较的(注:只要是关于大小比较都不可以),因为小数位是不一样的,所以再等号上要比较浮点型解决方法是
计算机魔术师
2022/08/20
1.4K0
关于PHP浮点数精度损失问题
$f = 0.57; echo intval($f * 100); //56 结果可能有点出乎你的意外,PHP遵循IEEE 754双精度: 浮点数, 以64位的双精度, 采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位). 符号位:最高位表示数据的正负,0表示正数,1表示负数。 指数位:表示数据以2为底的幂,指数采用偏移码表示 尾数:表示数据小数点后的有效数字. 再来看看小数用二进制怎么表示: 乘2取整,顺序排列,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,
wangxl
2018/03/08
9450
PHP和Python浮点数精度问题
what? 为啥输出了57 针对这个问题,逛了鸟哥的博客。(PHP浮点数的一个常见问题的解答) 主要需要理解的就是在计算机中浮点数转成二进制时是无限长的值。
用户2475223
2019/12/17
1K0
PHP和Python浮点数精度问题
浮点数原理与精度损失问题
计算机中小数的表示按照小数点的位置是否固定可以分为浮点数和定点数。为了方便和float32浮点数做对比,我们构造一个32位精度的定点数,其中小数点固定在23bit处:
TOMOCAT
2020/10/29
3.3K0
浮点数原理与精度损失问题
java 将小数拆分为两部分+浮点型精度丢失问题
上面这个方法里面,float-->int转化时直接丢弃小数部分,从而取得小数中的整数,而后作差得到小数部分,但是看下面输出:
翎野君
2023/05/12
4600
java 将小数拆分为两部分+浮点型精度丢失问题
double浮点数运算为啥会丢失精度?
前言:在工作中,谈到有小数点的加减乘除都会想到用BigDecimal来解决,但是有很多人对于double或者float为啥会丢失精度一脸茫然。还有BigDecimal是怎么解决的?话不多说,我们开始。
王念博客
2019/07/24
4.6K0
点击加载更多

相似问题

Java浮点精度问题

14

精度与精度java浮点数

20

Java浮点与双精度

13

Java中的双浮点精度

22

浮点精度

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档