Tag: 浮点

将NSString转换为浮点数 – 添加小数位数?

我parsingXML文件中的一些顶点信息,其内容如下(部分提取): 21081.7 23447.6 2781.62 24207.4 18697.3 -2196.96 我把这个string保存为一个NSString,然后转换为一个浮点值(我稍后将会把它传给OpenGL ES) NSString * xPoint = [finishedParsingArray objectAtIndex:baseIndex]; NSLog(@"xPoiint is %@", xPoint); float x = [xPoint floatValue]; 问题是浮动x更改值如下所示: 21081.699219, 23447.599609, 2781.620117, 24207.400391, 18697.300781, -2196.959961 正如你所看到的,它正在改变小数位数(不知道它是如何做到这一点 – 必须在xml文件中隐藏格式?) 我的问题是我怎么能存储的浮点数匹配的NSString / XML文件中的原始数字相同的小数位数? 提前致谢 !

奇怪的行为与stringWithFormat浮法

(lldb) po [NSString stringWithFormat:@"%.1f", 0.01] (id) $21 = 0x003a2560 19991592471028323832250853378750414848.0 (lldb) po [NSString stringWithFormat:@"%.1f", 0.1] (id) $22 = 0x0de92240 -0.0 有没有人了解这里的行为? 我在设备上运行。

iPhone / iPad的双精度math

这个社区Wiki问题的接受答案: 在编写Objective-C和Cocoa时,您使用的最佳实践是什么? 说,iPhone不能做双精度math(或者说,他们可以,但只能在软件中模拟)。不幸的是,它提供的2009年的链接作为参考: iPhone上的双重浮动与浮动直接矛盾的声明。 这两个都是旧的,写在3GS刚出来的时候。 那么最新的arm7架构有什么故事呢? 我是否需要担心第二个链接引用的“拇指”编译器标志? 我可以安全地使用doublevariables吗? 386SX和DX以及“math协同处理器”的黑暗时代,我正在讨厌的倒叙。 告诉我,这是2012年,我们已经移动。

如何将字节转换为浮点值在swift中?

这是我的代码将字节数据转换为浮动。 我试着在这个网站给出的每一个答案。 我得到这个“<44fa0000>”字节数据的指数值 static func returnFloatValue(mutableData:NSMutableData)->Float { let qtyRange = mutableData.subdataWithRange(NSMakeRange(0, 4)) let qtyString = String(qtyRange) let qtyTrimString = qtyString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")) let qtyValue = Float(strtoul(qtyTrimString, nil, 16)/10) return qtyValue } 谢谢

iOS围绕一个浮动

我有一个浮点数有更多的小数位,例如: float fRes = 10.0 / 3.0; 实际上fRes值是3.3333333333333它可能设置为例如2个十进制数字: float fRes = 10.0 / 3.0; // fRes is 3.333333333333333333333333 float fResOk = FuncRound( fRes, 2 ); // fResOk is 3.33 提前致谢

如何使用`typedef NS_ENUM`在一个.h文件中定义几个variablestypes

我已经使用typedef NS_ENUM来重组旧的代码中的数据常量。 使用这里find的方法,每个typedef在一个单独的.h文件中声明,可以导入到项目中的任何类。 .h文件的内容被封装到编译器的消息中。 这对intvariables很好。 MYCharacterType.h #ifndef MYCharacterType_h #define MYCharacterType_h typedef NS_ENUM(NSInteger, MARGIN) { MARGIN_Top = 10, MARGIN_Side = 10, MARGIN_PanelBaseLine = 1 }; … #endif /* SatGamEnumType_h */ 但是,当我试图包含floatvariables时Xcode抱怨 “非整型”NSNumber“是一个无效的基础types” 例如 typedef NS_ENUM(NSNumber, LINE_WIDTH) { LINE_WIDTH_Large = 1.5, LINE_WIDTH_Medium = 1.0, LINE_WIDTH_Small = 0.5, LINE_WIDTH_Hairline = 0.25 }; 我得到相同的消息,无论我使用NSValue或NSNumber所以我怀疑typedef NS_ENUM不是定义floatvariables(或至less我使用它的方式)的方式。 在这个答案的方法只会让我做我已经在一个文件中组织,但没有提供一种方法来重新组织在同一个文件中的floatvariables。 有人可以请解释如何做到这一点,所有variables都定义在一个.h文件,无论他们的types? 谢谢 解 […]

本地化浮动并指定iOS中的小数位数

我有一个浮点数,我想显示在一个小数位。 例如104.8135674 …在英语中显示为104.8。 通常我会使用: myString = [NSString stringWithFormat:@"%.1f",myFloat]; 但是,我想本地化的数字,所以我试过: myString = [NSString localizedStringWithFormat:@"%.1f",myFloat]; 这工作分配正确的小数点符号(例如 英文:104.8 德语:104,8 但是,对于使用不使用阿拉伯数字 (0123456789)的语言,将使用正确的小数点符号,但数字仍以阿拉伯数字表示。 例如 巴林 – 阿拉伯语:104,8(数字应该使用不同的符号) 所以我试了一下: myString = [NSNumberFormatter localizedStringFromNumber:[NSNumber numberWithFloat:myFloat] numberStyle:kCFNumberFormatterDecimalStyle]; 但是,我似乎无法指定小数位数。 它给了例如 英文:104.813

如何在Swift中将大于Int.max的浮点值转换为Int

我想要有以下浮点值的整数值: var floatingPointValue = NSDate().timeIntervalSince1970 * 1000 我不在乎这个浮点数的整数值实际上是一个整数还是一个string。

iOS ARM设备(iPhone 4)支持低于标准IEEE 754浮点数

在从Linux x86移植到iOS ARM(iPhone 4)的应用程序时,我发现浮点算术和小值的行为有所不同。 64位浮点数(double)小于[+/-] 2.2250738585072014E-308在IEEE 754-1985 / IEEE 754-2008标准中被称为非正规/非正规化/次正常数。 在iPhone 4上,这样的小数字被视为零(0),而在x86上,可以使用次正数来进行计算。 我无法find任何有关苹果Mac OS X手册页上的IEEE-754标准符合性的解释(3) 。 但是,由于堆栈溢出( 在浮点algorithm中的清零行为, iPhone上的Double vs float )的一些答案,我find了一些线索。 根据一些search,似乎沿着ARM内核使用的VFP (或NEON )math协处理器使用了Flush-To-Zero(FTZ)模式(例如,在输出端将低于正常值的值转换为0)和Denormals-Are-Zero DAZ)模式(例如,当用作input参数时,将低于正常值的值转换为0)来提供快速处理IEEE 754计算的硬件。 完整的IEEE754符合ARM支持代码 符合IEEE754标准的运行快速模式(仅限硬件) 关于FTZ和DAZ的一个很好的解释可以在IA-32的x87和SSE浮点协助中find:同花顺零(FTZ)和非正规零(DAZ) : FTZ和DAZ模式既处理发生无效浮点数据的情况,也处理下溢或非正常情况。 […]。 由保税区和DAZ处理的数量之间的差异非常微妙。 FTZ处理下溢情况,而DAZ处理非正常情况。 计算结果为非正常时,会发生下溢情况。 在这种情况下,FTZ模式将输出设置为零。 DAZ修正了非规范化被用作input的情况,既可以是常量,也可以是将无效内存读入寄存器。 DAZ模式在计算之前将计算的input设置为零。 然后可以说FTZ处理[输出],而DAZ处理[input]。 苹果开发者网站上关于FTZ的唯一的东西似乎在iOS ABI函数调用指南 : VFP状态寄存器| FPSCR | 特殊| 条件码位(28-31)和饱和位(0-4)不被函数调用保存。 exception控制(8-12),舍入模式(22-23)和清零(24)位只能由影响应用程序状态(包括框架API函数)的特定例程修改。 在函数入口和出口处,短向量长度(16-18)和步长(20-21)位必须为零。 所有其他位不能被修改。 根据ARM1176JZF-S技术参考手册,18.5操作模式 (第一个iPhone处理器),VFP可以被configuration为完全支持IEEE 754(亚正常算术),但在这种情况下,需要一些软件支持(陷入内核以软件计算)。 注意:我也读过Debian的ARM […]

iOS的Objective-C如何获得2小数四舍五入浮点值?

我有一个 float a = 1412.244019; 我需要四舍五入到最接近的第二个小数像1412.24000000。 我明白,如果我想提出只有两个小数我使用%.2f,但事实并非如此。 我需要新的math原因作为浮动。 我已经尝试了几个在stackoverflowfind没有运气的方法。 我使用的比较明显,我在下面提到,但仍然没有运气使用它。 你能明白为什么魔法不会发生吗? PS:它有时会达到预期的效果,不总是,这让我想…嗯… 提前致谢。 码: float a = 1412.244019; NSLog(@"a is %f", a); //output a is 1412.244019 a = [[NSString stringWithFormat:@"%.2f", a] floatValue]; NSLog(@"a is %f", a); //output a is 1412.239990 编辑: SEEMS就像我在上述手术之后使用float a一样,现在认为是1412.240000,尽pipeNSLog的说法不一样…奇怪。 但我得到了我想要的东西,所以为了浪费时间而赞叹不已:) 编辑我很乐意select你们作为正确的答案,但由于我只能select一个,我select了第一个好的答案和额外的解释(最后两个)。