相关疑难解决方法(0)

舍入错误?

在我的课程中,我被告知:

连续值大约在内存中表示,因此使用浮点数计算涉及舍入误差.这些是位模式的微小差异; 因此,e==f如果是漂浮物e,f则测试是不安全的.

参考Java.

这是真的?我使用了doubles和floats的比较语句,并且从未遇到过舍入问题.从来没有我在课本上读过类似的东西.当然虚拟机占了这个?

java memory floating-accuracy

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

德尔福数学:为什么0.7 <0.70?

如果我有变量a,b,类型为double的c,设c:= a/b,并给出a和b值为7和10,则c的值为0.7,寄存器小于0.70.

另一方面,如果变量都是类型扩展的,则c的值0.7不会注册为小于0.70.

这看起来很奇怪.我错过了哪些信息?

delphi math floating-point comparison types

10
推荐指数
4
解决办法
3638
查看次数

iphone/Objective C - 比较双打不起作用

我想我会疯了."反击"和"间隔"都是双打.这发生在加速度计上:didAccelerate,间隔为(.01)."计数器"最终应增加到"间隔".由于某种原因,我不能得到这个"如果"响.

我忽略了什么吗?

double interval = .5;
 if( counter == interval ){ //should eventually be .50000 == .50000
  NSLog( @"Hit!" );
  [self playSound];
  counter = 0;
 }else{
  counter += .01;
 }
NSLog( @"%f, %f, %d",counter,interval,(counter == interval) );
Run Code Online (Sandbox Code Playgroud)

iphone floating-point objective-c ios

10
推荐指数
2
解决办法
9490
查看次数

Javascript Math Error:Inexact Floats

可能的重复:
JavaScript的数学是否被破坏?
浮点是如何存储的?什么时候重要?

码:

var tax= 14900*(0.108);
alert(tax);
Run Code Online (Sandbox Code Playgroud)

以上给出了1609.2的答案

var tax1= 14900*(10.8/100);
alert(tax1);
Run Code Online (Sandbox Code Playgroud)

以上给出了1609.200000000003的答案

为什么?我想我可以收集价值观,但为什么会这样呢?

更新: 找到问题的临时解决方案.

首先乘以:

(14900*10.8)/100 = 1609.2
Run Code Online (Sandbox Code Playgroud)

然而

(14898*10.8)/100 = 1608.9840000000002
Run Code Online (Sandbox Code Playgroud)

为此,将10.8乘以a factor(100 in this case)并调整分母:

(14898*(10.8*100))/10000 = 1608.984
Run Code Online (Sandbox Code Playgroud)

我想如果可以为额外的000s做一个preg_match然后相应地调整因子,可以避免浮点错误.然而,最终的解决方案是数学库.

javascript math

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

添加两个给出错误结果的双

我正在使用下面的一段代码,并且在一些神秘的情况下,添加的结果并不像它应该的那样:

double _west = 9.482935905456543;
double _off = 0.00000093248155508263153;
double _lon = _west + _off;

// check for the expected result
Debug.Assert(_lon == 9.4829368379380981);
// sometimes i get 9.48293685913086 for _lon (which is wrong)
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用了一些本机DLL,我怀疑某些DLL是造成这种"错误计算"的原因,但我需要弄清楚哪一个.任何人都可以给我一个提示如何找出问题的根源吗?

.net c# floating-point double addition

2
推荐指数
1
解决办法
7063
查看次数

为什么这个NSPredicate不起作用?

我有一个MKAnnotation名为的对象数组arrAnnotations.我想从与CLLocation名为"newLocation" 的对象中存储的坐标相同的坐标中选择一个注释.

我正在尝试使用a NSPredicate,但它不起作用.

NSPredicate *predicate = [NSPredicate  predicateWithFormat:@"(SELF.coordinate == %f)", newLocation.coordinate];
NSArray* filteredArray = [arrAnnotations filteredArrayUsingPredicate:predicate];
[self.mapView selectAnnotation:[filteredArray objectAtIndex:0] animated:YES];
Run Code Online (Sandbox Code Playgroud)

filteredArray始终包含零个对象.

我也试过以下,但也无效

NSPredicate *predicate = [NSPredicate  predicateWithFormat:@"(coordinate == %f)", newLocation.coordinate];
Run Code Online (Sandbox Code Playgroud)

NSPredicate *predicate = [NSPredicate  predicateWithFormat:@"(coordinate > 0)"];
Run Code Online (Sandbox Code Playgroud)

NSPredicate *predicate = [NSPredicate  predicateWithFormat:@"(coordinate.latitude == %f)", newLocation.coordinate.latitude];
Run Code Online (Sandbox Code Playgroud)

最后两个崩溃了应用程序,第三个崩溃了NSInvalidArgumentExceptionfor [NSConcreteValue compare:]和第四个,因为latitude它不符合键值编码(我认为这是因为坐标只是一个c-struct而不是一个NSObject?).

我该如何使用它NSPredicate?任何人都可以给我一个链接到一个文件,显示Predicates如何在幕后工作?我不明白他们实际做了什么,尽管我已阅读并理解Apple的Predicate Programming Guide的大部分内容.正在使用for ... in构造中搜索带有谓词的大型数组比使用谓词循环更有效吗?如果是/否,为什么?

comparison performance cocoa predicate nspredicate

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

Objective-C浮点加法错误

可能重复:
Objective-C中的浮点数有问题

我已经把这个问题解决了,就像我能得到它一样简单.随意尝试相同的事情,并告诉我,如果你得到相同的错误,你可能有什么解决方案.我已经在几台电脑上试过了.

float total = 200000.0f + 154196.8f;
NSLog(@"total: %f", total);
Run Code Online (Sandbox Code Playgroud)

输出是:

total: 354196.812500
Run Code Online (Sandbox Code Playgroud)

如果有人有任何逻辑解释,请随时分享.

floating-point objective-c

1
推荐指数
2
解决办法
1586
查看次数