相关疑难解决方法(0)

浮动和双重比较最有效的方法是什么?

比较两个double或两个float值的最有效方法是什么?

简单地这样做是不正确的:

bool CompareDoubles1 (double A, double B)
{
   return A == B;
}
Run Code Online (Sandbox Code Playgroud)

但是像这样:

bool CompareDoubles2 (double A, double B) 
{
   diff = A - B;
   return (diff < EPSILON) && (-diff < EPSILON);
}
Run Code Online (Sandbox Code Playgroud)

似乎浪费处理.

有谁知道更聪明的浮动比较器?

c++ algorithm floating-point optimization

495
推荐指数
13
解决办法
39万
查看次数

测试两条线是否相交 - JavaScript函数

我已经尝试搜索一个javascript函数,它将检测两条线是否相互交叉.

该函数将获取每一行的两个起始端点的x,y值(我们称之为A行和B行).

如果相交则返回true,否则返回false.

功能示例.如果答案使用矢量对象,我很高兴.

Function isIntersect (lineAp1x, lineAp1y, lineAp2x, lineAp2y, lineBp1x, lineBp1y, lineBp2x, lineBp2y) 
{

    // JavaScript line intersecting test here. 

}
Run Code Online (Sandbox Code Playgroud)

一些背景信息:这段代码是我想在html5画布中制作的游戏,也是我碰撞检测的一部分.

javascript intersection collision-detection line-intersection

26
推荐指数
6
解决办法
4万
查看次数

为什么0.5 == 0.5f为真但0.1 == 0.1f为假?

请看以下两个代码:

public static void main(String... args)
{
   System.out.println(0.5==0.5f);
}
Run Code Online (Sandbox Code Playgroud)

输出:true

 public static void main(String... args)
 {
   System.out.println(0.1==0.1f);
 }
Run Code Online (Sandbox Code Playgroud)

输出:false

为什么会这样?

java literals

23
推荐指数
2
解决办法
7828
查看次数

我们应该将浮点数与相对*误差进行比较吗?

到目前为止,我已经看到很多关于浮点数相等的帖子.对于"我们应该如何决定x和y是否相等?"这样的问题的标准答案.是

abs(x - y) < epsilon
Run Code Online (Sandbox Code Playgroud)

其中epsilon是一个固定的小常数.这是因为"操作数"x和y通常是涉及舍入误差的某些计算的结果,因此标准相等运算符==不是我们的意思,我们应该问的是x和y是否接近,不相等.

现在,我觉得如果x与y"几乎相等",那么x*10 ^ 20也应该与y*10 ^ 20"几乎相等",因为相对误差应该是相同的(但是"相对的" "到底是什么?" 但是对于这些大数字,上述测试将失败,即该解决方案不会"扩展".

你会如何处理这个问题?我们应该重新调整数字还是重新调整epsilon?怎么样?(或者我的直觉是错的吗?)

这是一个相关的问题,但我不喜欢它接受的答案,因为reinterpret_cast对我来说似乎有点棘手,我不明白发生了什么.请尝试提供简单的测试.

language-agnostic math floating-point comparison

15
推荐指数
2
解决办法
4963
查看次数

比较浮点数 - 相同的数字,但不相等?

可能重复:
我应该如何进行浮点比较?
php整数和浮点数比较不匹配

我有两个变量,$_REQUEST['amount']并且$carttotal,在电子商务的事情.当然,它们在尝试处理付款时应该匹配,以防止在最后一分钟手动覆盖支付金额,或者当然是计算错误.

然而:

$carttotal = $carttotal * 1;
$_REQUEST['amount'] = $_REQUEST['amount'] * 1;

if($carttotal != $_REQUEST['amount']) {
    $code = 0; // cart empty under this user - cannot process payment!!! 
    $message = 'The cart total of ' . $carttotal . ' does not match ' . $_REQUEST['amount'] . '. Cannot process payment.';
    $amount = $carttotal;
    $json = array('code' => $code,
                  'message' => $message,
                  'amount' => $amount);
    die(json_encode($json));
} else {
    $trnOrderNumber = $client->id . …
Run Code Online (Sandbox Code Playgroud)

php floating-point

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

飞镖开关盒

我试图了解开关在飞镖中是如何工作的.我有非常简单的代码:

methodname(num radians) {
  switch (radians) {
    case 0:
      // do something
      break;
    case PI:
      // do something else
      break;
  }
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这不起作用.如果保留为此错误是:case表达式必须具有相同的类型(我的类型是num,但不是编辑器).如果我将0更改为0.0则表示:切换类型表达式double不能覆盖==运算符 - 我不知道这意味着什么!

那么切换案例的方法是什么?我可以将它转换为if/else可能但我想知道如何使开关工作,为什么它不起作用.

我正在运行最新的DartEditor稳定版本.

请有人可以帮忙吗?

dart

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

比较浮点值

我刚刚阅读了有关浮点值比较的声明

不能使用==或!=运算符比较浮点值.大多数浮点值没有精确的二进制表示,并且精度有限.

如果是这样,比较两个浮点值的最佳方法是什么?

.net c# floating-point comparison

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

比较双重时的不同行为

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

(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
查看次数

C - 如果数组中的值

我是 C 新手,目前正在研究数组。我想检查某个值是否在数组中,但我遇到了一些问题(不仅在语法方面,而且在理解方面)。

我的目标是有一个我可以调用的函数,给它两个参数——要搜索的值和要搜索的数组——并根据它是否被找到返回一个 0 或 1。

我的方法如下:

#include <stdio.h>
#include <stdlib.h>

int valueinarray(float val, float *arr[]);

int main()
{
    float arr[] = {5, 4.5, 4, 3.5, 3, 2.5,};
    int test = valueinarray(4.5, *arr[]);
    printf("%d", test);

    return 0;
}

int valueinarray(float val, float *arr[]){
    int i;
    for(i = 0; i < sizeof(*arr[]); i++){
        if(*arr[i] == val) return 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我现在有两个问题,特别是关于语法的问题:

  1. 如果我创建一个带有指针作为其参数之一的函数,我是否必须一直在函数内部使用“*arr[]”来引用它?还是“arr[]”甚至“arr”就足够了?

  2. 我是否正确理解我无法将整个数组传递给函数所以我改用指针?

此外,我的方法是错误的,我不明白为什么。迭代数组似乎工作得很好,甚至检查某个值是否在其中也有效,问题似乎出在我调用函数的方式上。我读过双指针,这是需要它们的场景吗?如果不是,他们需要什么?

非常感谢。

c arrays syntax

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

给定一个数字,如何在一系列浮点数据中找到最接近的数字

我在寻找亚马逊的面试问题时想到了这个问题.

给定一个数字,如何在一系列浮点数据中找到最接近的数字?

如果一切都是整数,则answer减去数组中每个数字的数字,然后在数组中查找具有最小绝对值的元素.

但是当谈到浮点时,它应该是高度非暴力的.

阿尼的想法?谢谢.

algorithm floating-point-precision

5
推荐指数
1
解决办法
1096
查看次数