Questions tagged «floating-point»

浮点数是实数的近似值,可以表示比整数大的范围,但使用相同的内存量,但代价是精度较低。如果您的问题是关于较小的算术错误(例如,为什么0.2 + 0.1等于0.300000001?)或十进制转换错误,请在发布前阅读下面链接的“信息”页面。

7
转换为int vs floor
这些之间有什么区别: float foo1 = (int)(bar / 3.0); float foo2 = floor(bar / 3.0); 据我了解,两种情况都有相同的结果。编译后的代码有什么区别吗?
120 c++  c  floating-point 

5
约翰·卡马克(John Carmack)不寻常的快速反平方根(雷神三世)
John Carmack在Quake III源代码中具有一个特殊功能,该功能可以计算浮点数的反平方根,比常规速度快4倍(float)(1.0/sqrt(x)),其中包括一个奇怪的0x5f3759df常数。请参见下面的代码。有人可以逐行解释这里到底发生了什么,为什么这样做比常规实现快得多? float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * …

29
在Python中截断浮动
我想从浮点数中删除数字,以使小数点后的位数固定不变,例如: 1.923328437452 -> 1.923 我需要作为字符串输出到另一个函数,而不是打印。 我也想忽略丢失的数字,而不是四舍五入。

7
在C#中将字符串转换为浮点数
我正在转换类似“ 41.00027357629127”的字符串,并且正在使用; Convert.ToSingle("41.00027357629127"); 要么 float.Parse("41.00027357629127"); 这些方法返回4.10002732E + 15。 当我转换为浮点数时,我想要“ 41.00027357629127”。这个字符串应该是相同的...

6
为什么SSE标量sqrt(x)比rsqrt(x)* x慢?
我一直在Intel Core Duo上进行一些核心数学分析,在查看各种平方根方法时,我注意到了一些奇怪的事情:使用SSE标量运算,倒数平方根乘以它会更快获取sqrt,而不是使用本机sqrt操作码! 我正在用类似这样的循环进行测试: inline float TestSqrtFunction( float in ); void TestFunc() { #define ARRAYSIZE 4096 #define NUMITERS 16386 float flIn[ ARRAYSIZE ]; // filled with random numbers ( 0 .. 2^22 ) float flOut [ ARRAYSIZE ]; // filled with 0 to force fetch into L1 cache cyclecounter.Start(); for …

11
应该以哪种顺序添加浮点数以获得最精确的结果?
这是我最近的一次采访中问的一个问题,我想知道(我实际上不记得数值分析的理论,所以请帮助我:) 如果我们有一些函数,它会累积浮点数: std::accumulate(v.begin(), v.end(), 0.0); v是一个std::vector<float>,例如。 在累加它们之前对这些数字进行排序会更好吗? 哪个命令会给出最准确的答案? 我怀疑排序依次递增的数字实际上使数值误差少,但不幸的是我不能证明它自己。 PS我确实意识到这可能与现实世界的编程无关,只是感到好奇。

8
Printf宽度说明符可保持浮点值的精度
是否有一个printf宽度说明符可以应用于浮点说明符,该宽度说明符会自动将输出格式化为必要数量的有效数字,以便在回扫字符串时获取原始的浮点值? 例如,假设我float将a 打印到2小数点后的精度: float foobar = 0.9375; printf("%.2f", foobar); // prints out 0.94 当我扫描输出时0.94,我没有符合标准的保证,即会获得原始的0.9375浮点值(在此示例中,我可能不会)。 我希望有一种方法可以告诉printf您自动将浮点值打印到必要的有效位数,以确保可以将其扫描回传递给的原始值printf。 我可以使用其中的一些宏float.h来导出要传递的最大宽度printf,但是是否已有说明符可以自动打印到必要数量的有效数字 -或至少打印到最大宽度?

10
编号后的“ f”
是什么在f后的数字表示?这是C还是Objective-C的?不将其加到常数上有什么区别吗? CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f); 你能解释为什么我不只是写: CGRect frame = CGRectMake(0, 0, 320, 50);

4
Java中的float是什么?
我写了这段代码: float b = 3.6; 我得到这个: 错误:未解决的编译问题: 类型不匹配:无法从double转换为float 为什么?的定义是float什么?

3
是否可以在Rust中编写Quake的快速InvSqrt()函数?
这只是为了满足我自己的好奇心。 是否有此实现: float InvSqrt (float x) { float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; } 在Rust中?如果存在,则发布代码。 我尝试过但失败了。我不知道如何使用整数格式编码浮点数。这是我的尝试: fn main() { println!("Hello, world!"); println!("sqrt1: {}, ",sqrt2(100f64)); } fn sqrt1(x: f64) -> f64 { x.sqrt() } …

19
在Swift中将String转换为Float
我正在尝试转换从UITextField中获取的数字(我认为这些数字实际上是字符串),并将其转换为Float,以便可以对其进行乘法运算。 我有两个UITextfield声明如下: @IBOutlet var wage: UITextField @IBOutlet var hour: UITextField 当用户按下UIButton时,我想计算用户赚取的工资,但是我不能,因为我需要先将其转换为浮动工资,然后才能使用它们。 我知道如何通过执行以下操作将它们转换为整数: var wageConversion:Int = 0 wageConversion = wage.text.toInt()! 但是,我不知道如何将它们转换为浮点数。

11
现代硬件上的浮点数与整数计算
我正在用C ++进行一些性能至关重要的工作,并且我们目前正在使用整数计算来解决那些固有的浮点问题,因为它“更快”。这会引起很多烦人的问题,并增加了很多烦人的代码。 现在,我记得读过有关浮点计算如何如此缓慢的信息,大约在386天左右,我相信(IIRC)有一个可选的协同处理器。但是,如今在使用指数级更复杂,功能更强大的CPU时,如果进行浮点或整数计算,那么“速度”没有区别吗?特别是由于与导致流水线停滞或从主内存中获取某些内容相比,实际的计算时间很小? 我知道正确的答案是在目标硬件上进行基准测试,什么是测试此硬件的好方法?我编写了两个微型C ++程序,并将它们的运行时间与Linux上的“时间”进行了比较,但是实际的运行时间变化太大(对我在虚拟服务器上运行没有帮助)。我一整天都没有运行数百个基准测试,制作图表等,我是否可以做一些事情来对相对速度进行合理测试?有什么想法或想法吗?我完全错了吗? 我使用的程序如下,它们在任何方面都不相同: #include <iostream> #include <cmath> #include <cstdlib> #include <time.h> int main( int argc, char** argv ) { int accum = 0; srand( time( NULL ) ); for( unsigned int i = 0; i < 100000000; ++i ) { accum += rand( ) % 365; } …

9
检查浮点值是否等于0是否安全?
我知道您通常不能依赖双精度或十进制类型值之间的相等性,但是我想知道0是否是特例。 虽然我可以理解0.00000000000001和0.00000000000002之间的不精确性,但0本身似乎很难弄乱,因为它什么都没有。如果您对某事一无所知,那就再也不是什么了。 但是我对这个话题不太了解,所以我不必说。 double x = 0.0; return (x == 0.0) ? true : false; 那会永远返回真吗?

14
格式使用标准json模块浮动
我正在使用python 2.6中的标准json模块来序列化float列表。但是,我得到这样的结果: >>> import json >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' 我希望浮点数仅使用两位十进制数字进行格式化。输出应如下所示: >>> json.dumps([23.67, 23.97, 23.87]) '[23.67, 23.97, 23.87]' 我尝试定义自己的JSON Encoder类: class MyEncoder(json.JSONEncoder): def encode(self, obj): if isinstance(obj, float): return format(obj, '.2f') return json.JSONEncoder.encode(self, obj) 这适用于唯一的float对象: >>> json.dumps(23.67, cls=MyEncoder) '23.67' 但是对于嵌套对象失败: >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' 我不想有外部依赖性,所以我更喜欢使用标准的json模块。 …

7
C ++警告:双零除数
情况1: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0.0)<<std::endl; } 它在编译时没有任何警告和打印inf。好的,C ++可以处理零除(实时查看)。 但, 情况2: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0)<<std::endl; } 编译器发出以下警告(实时查看): warning: division by zero [-Wdiv-by-zero] std::cout<<(d/0)<<std::endl; 为什么在第二种情况下编译器会发出警告? 是0 != 0.0吗 编辑: #include <iostream> int main() { if(0 == 0.0) std::cout<<"Same"<<std::endl; else std::cout<<"Not …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.