相关疑难解决方法(0)

为什么浮点运算在某些语言中显示不同?

我读过这些:

他们解释"如何".我想知道为什么这些语言有所不同.考虑到相同的输入,我期待类似的结果.

test.js

#!/usr/bin/env node

var nine = 9.0;
var pointOhOhOne = 0.001;
var result = nine * pointOhOhOne;
console.log(result);
Run Code Online (Sandbox Code Playgroud)

test.java

public class test {

  public static void main(String[] argv) {
    double nine = 9.0d;
    double pointOhOhOne = 0.001d;
    double result = nine * pointOhOhOne;
    System.out.println(result);
  }

}
Run Code Online (Sandbox Code Playgroud)

test.c的

#include "stdio.h"

int main() {
  double nine = 9.0;
  double pointOhOhOne = 0.001;
  double result = nine * pointOhOhOne;
  printf("%f", result);
}
Run Code Online (Sandbox Code Playgroud)

test.rb

#!/usr/bin/env ruby

nine = 9.0
pointOhOhOne …
Run Code Online (Sandbox Code Playgroud)

floating-point

18
推荐指数
2
解决办法
1071
查看次数

为什么新的BigDecimal("0.015").compareTo(new BigDecimal(0.015))返回-1?

为什么new BigDecimal("0.015").compareTo(new BigDecimal(0.015))返回-1?如果我希望这两者相等,是否有另一种方法来比较它们?

java bigdecimal

15
推荐指数
3
解决办法
917
查看次数

为什么C#中的浮点运算不精确?

为什么以下程序会打印出打印的内容?

class Program
{
    static void Main(string[] args)
    {
        float f1 = 0.09f*100f;
        float f2 = 0.09f*99.999999f;

        Console.WriteLine(f1 > f2);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是

false
Run Code Online (Sandbox Code Playgroud)

c# floating-point

13
推荐指数
3
解决办法
2万
查看次数

为什么(双)0.6f>(双)(6/10f)?

这是我的电脑上发生的事情:

(double)(float)0.6
= 0.60000002384185791

(double)0.6f
= 0.60000002384185791

(double)(6/10f)
= 0.6

(double)(float)(6/10f)
= 0.6
Run Code Online (Sandbox Code Playgroud)

6/10f也是浮子,怎么可以精确到0.6?
在我看来(双)(6/10f)也应该是0.60000002384185791.有人可以帮忙解释一下吗?谢谢!

c#

10
推荐指数
1
解决办法
2469
查看次数

为什么这两个float64具有不同的值?

考虑这两种情况:

fmt.Println(912 * 0.01)
fmt.Println(float64(912) * 0.01)
Run Code Online (Sandbox Code Playgroud)

(去游乐场链接)

第二个打印9.120000000000001,这实际上很好,我明白为什么会这样.

但是,为什么第一行打印9.12,最后没有... 01?Go是否将两个无类型常量相乘,并在编译时简单地用9.12文字替换它们?

floating-point floating-accuracy go

9
推荐指数
2
解决办法
444
查看次数

浮动分裂的剩余部分

如何计算两个floats 的除法余数?

objective-c

8
推荐指数
2
解决办法
2万
查看次数

math.exp(2)和math.e**之间的区别2

编程时,我注意到math.exp(2)和math.e**2的结果之间存在差异.如下所示,计算e ^ 1时不会出现这种差异.

不是一个经验丰富的程序员,我想知道为什么这有所不同?我认为它与四舍五入有关.python文档说math.exp(x)返回e**x,但这看起来并不完全正确.那么math.exp(x)操作怎么会不同math.e**x呢?

>>> math.exp(1)
2.718281828459045
>>> math.e**1
2.718281828459045
>>> math.exp(1)==math.e**1
True
>>> math.exp(2)
7.38905609893065
>>> math.e**2
7.3890560989306495
>>> math.exp(2)==math.e**2
False
>>> math.exp(100)
2.6881171418161356e+43
>>> math.e**100
2.6881171418161212e+43
>>> math.exp(100)==math.e**100
False
Run Code Online (Sandbox Code Playgroud)

python math exponent

8
推荐指数
2
解决办法
4900
查看次数

将float浮动到2位小数的最简单方法?

在Swift中,有没有办法将浮点数截断为2位小数,这样你就可以用它进行进一步的计算?我见过的所有线程都处理了一个字符串,我无法弄清楚如何使用数学方法.

我尝试使用扩展(在这个论坛上找到),想象我可以在截断后转回浮动,但我最终在我开始的地方,另一个非截断的浮点数.我需要我的返回值是四分之一步(即6.50,6.75,5.25等),而我最终得到的结果就像6.990022 ....

必须有一个简单的方法来做到这一点,但我正在撞墙.提前致谢...

这是问题所在:

func roundToNearestQuarter(#power : Float) -> String {

     var errorToLowerQuarterRaw : Float = power % 0.25  // 0.210000038146973

     var errorToLowerQuarterString = errorToLowerQuarterStepRaw.string(2)  // "0.21"

     var errorToLowerQuarter = NSString(string: errorToLowerQuaterStepString).floatValue  // 0.209999993443489

// more code

}

roundToNearestQuater(6.71)
Run Code Online (Sandbox Code Playgroud)

decimal truncation swift

7
推荐指数
1
解决办法
6324
查看次数

Julia中的精确十进制算术

由于浮点数学的性质,.4 * .4= 0.16000000000000003朱莉娅.我希望以0.16CPU高效的方式获得数学上正确的答案.我知道round()有效,但这需要事先了解答案占用的小数位数,因此这不是一般解决方案.

floating-point multiplication julia

7
推荐指数
1
解决办法
1530
查看次数

比较双重时的不同行为

您好我知道计算机受数字精度的限制,有些数字无法在二进制系统中准确表示.这就是我问为什么这样比较的原因

(0.1*3) == 0.3
Run Code Online (Sandbox Code Playgroud)

在Java语言中评估为false在C中它评估为true,对我来说Java行为更直观一些.任何提供的答案都不能回答我的问题,为什么他们有不同的行为,因为两者都使用IEEE 754标准.

@update我正在使用ideone来测试条件.

c java

6
推荐指数
1
解决办法
114
查看次数