objective-c – 使用NSUInteger的奇怪行为 – 无法正确转换为float

objective-c – 使用NSUInteger的奇怪行为 – 无法正确转换为float,第1张

概述这是我的情况.它让我疯狂: 我有一个NSMutableArray,其计数值为517.我有一个double值,这是我的乘数. double multiplier = 0.1223;double result = [myArray count] * multiplier; // 63 even (wrong!) 实际上它应该是63.2291.如果我走: double result = [myArra 这是我的情况.它让我疯狂:

我有一个NSMutableArray,其计数值为517.我有一个double值,这是我的乘数.

double multiplIEr = 0.1223;double result = [myArray count] * multiplIEr; // 63 even (wrong!)

实际上它应该是63.2291.如果我走:

double result = [myArray count] * 0.1223; // 63.2291 (right!)

要么..

double result = 517 * multiplIEr; // 63.2291 (right!)

这对任何人都有意义吗?

附录:

这是我的实际功能:

- (double) getValueForPercentage:(double)percVal{   int adjustedCount = [originalData count] - 1;   double final = percVal * (double)adjustedCount;   return final;}

当我这样做时,我从未得到超过小数点的任何数字.然而,如果我摆脱“-1”,a-la,它确实有效:

- (double) getValueForPercentage:(double)percVal{   int adjustedCount = [originalData count];   double final = percVal * (double)adjustedCount;   return final;}

当然,我需要-1.

第二个附录:

我注意到的另一个有趣的事情是,如果我将一个硬编码的数字传递给这个函数它工作正常,但如果我传递我需要使用的double值,它会失败:

int pointCount = [srcdata getDayCount];for (int i = 0; i < pointCount; i++) {   double progress = (double)i/(double)(pointCount - 1);   double satv = [srcdata getValueForPercentage:progress];   // satv is always a number without any digits beyond the decimal}
解决方法 好吧,当我开始遇到这些问题时,我环顾四周,没有找到任何理由或解释.

我现在做的是让一切都变成一个NSNumber,然后在上面调用doubleValue.这应该会产生您正在寻找的结果:

NSNumber * pointCount = [NSNumber numberWithUnsignedInt: [srcdata getDayCount]];for (NSInteger i = 0; i < [pointCount intValue]; i++) {    NSNumber * count = [ NSNumber numberWithInt: i ];    double progress = [count doubleValue]/[pointCount doubleValue] - 1.0;    double satv = [srcdata getValueForPercentage:progress];    // satv is always a number without any digits beyond the decimal}

希望能帮助到你.

总结

以上是内存溢出为你收集整理的objective-c – 使用NSUInteger的奇怪行为 – 无法正确转换为float全部内容,希望文章能够帮你解决objective-c – 使用NSUInteger的奇怪行为 – 无法正确转换为float所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存