floating-point相关内容

gfortran IEEE 异常不准确

我们在一台新的 64 b 机器上使用 gfortran (5.3.1)、Fedora 23.使用简单的 gfortran -o 进行编译(我们没有使用 -ffpe-trap 选项!),会引发“classical-trivial"警告: 注意:以下浮点异常是信号:IEEE_INVALID_FLAG 这是由于 INEXACT 异常(类型 2.0/3.0).DDD 调试器指向一个实常数 (180d0 ..
发布时间:2022-01-14 09:57:05 其他开发

为什么 Int(Float(Int.max)) 给我一个错误?

我观察到一些非常奇怪的事情.如果你在 Swift 中运行这段代码: Int(Float(Int.max)) 它崩溃并显示错误消息: 致命错误:浮点值无法转换为 Int,因为结果会大于 Int.max 这真的很违反直觉,所以我将表达式扩展为 3 行,并尝试查看操场中的每个步骤会发生什么: 让 a = Int.max让 b = 浮点数(a)让 c = Int(b) 它崩溃并显示相同 ..
发布时间:2022-01-13 08:16:55 移动开发

乘以 1.0 和 int 到浮点转换的精度

假设条件 (int)(i * 1.0f) == i 对于任何整数 i 为真是否安全? 解决方案 没有. 如果 i 足够大以至于 int(float(i)) != i (假设 float 是 IEEE-754 单精度,i = 0x1000001 足以证明这一点)那么这是错误的,因为乘以 1.0f 会强制转换为 float,即使随后的乘法不会改变值. 但是,如果 i 是一个 32 ..
发布时间:2022-01-13 08:12:26 C/C++开发

SQL Server 2005 数值精度损失

调试一些金融相关的 SQL 代码发现了一个关于 numeric(24,8) 数学精度的奇怪问题. 在您的 MSSQL 上运行以下查询,您将得到 A + B * C 表达式结果为 0.123457 选择 A,乙,C,A + B * C从(选择 CAST(0.12345678 作为数字(24,8))作为 A,CAST(0 作为数字(24,8))作为 B,铸造(500 作为数字(24,8)) ..

转换“浮动";到没有 Float32Array 的 Javascript 中的字节

好的,我是一个相当烦人的情况,我无法访问诸如 Float32Array 之类的类型化数组,但仍然需要能够将 Javascript 数字转换为字节.现在,我可以很好地处理一个整数,但我不知道如何处理浮点值. 我已经解决了相反的问题(将字节转换为浮点数),但是关于从浮点数转换为字节的文档非常稀缺,因为大多数语言只是让您读取指针或具有用于处理的通用类它. 理想情况下,我希望能够将浮点数转换为 ..
发布时间:2022-01-13 00:05:27 前端开发

将浮点小数转换为分数

我正在尝试将用户键入的具有小数结果的计算转换为分数.例如;66.6666666667 成 66 2/3.任何指针?提前感谢 解决方案 连分数可以用于找到严格意义上的“最佳"实数的有理逼近.这是一个 PHP 函数,它找到给定(正)浮点数的有理逼近,其相对误差小于 $tolerance: $n*$tolerance);返回“$h1/$k1";}printf("%s\n", float2ra ..
发布时间:2022-01-12 23:57:26 PHP

如何用前导零填充 Fortran 浮点输出?

我有一些浮点数需要从 Fortran 程序中输出.假设最大数字可能是 999.9999,它们都是非负数.我需要在所有小于 100 的数字前面补零. 例如,如果我有 25.6893782、245.354567 和 1.2345678,我需要以类似的形式将它们打印出来 025.6894245.3546001.2346 我该怎么做?例如,如果我知道所有的数字都在 10 到 99 之间,那么使用 ..
发布时间:2022-01-12 09:27:59 其他开发

Json.NET 用最少的小数位序列化浮点/双精度,即没有多余的“.0"?

当序列化浮点数和双精度数时,如果数字不包含任何小数部分,Json.NET 总是在末尾添加“.0".我想知道是否有一种简单的方法可以绕过它,从而产生更紧凑的表示?序列化包含许多数字的对象时,额外的句点和零会累加. 例如,运行这段代码时: JsonConvert.SerializeObject(1.0); 我希望(并且想要)这个结果: “1" 但是我得到了: "1.0" 我查看了源代 ..
发布时间:2022-01-11 21:57:14 C#/.NET

NVIDIA GPU (sm_13) 上的 IEEE-754 标准

如果我在主机和设备(GPU arch sm_13)上执行浮点(单精度)操作,那么值会不同吗? 解决方案 在 白皮书 来自 NVIDIA.基本上: 目前几乎所有东西都实现了 IEEE-754; 即使在忠实实施该标准之间,您仍然可以看到结果差异(众所周知,英特尔在内部使用 80 位实现双精度),或者编译器的高优化设置可能会改变结果 计算能力 2.0 及更高版本的 NVIDIA 卡支持 ..
发布时间:2022-01-10 15:40:34 其他开发

在 GPU 上用 2 个 FP32 模拟 FP64

如果用两个单精度浮点数来模拟双精度浮点数,性能会如何,能做好吗? 目前,Nvidia 对支持双精度的 Tesla 卡收取相当高的费用,使您能够获得三分之一的单精度性能(Titan/Titan Black 除外). 如果使用具有 gimped 双精度的 Geforce GPU 并使用 2 个单精度浮点数模拟双精度,性能会如何? 解决方案 您可以通过计算实现每个双浮点操作所需的 f ..
发布时间:2022-01-10 15:30:02 其他开发

Matlab中数字的二进制表示

有返回浮点数的二进制表示的 Matlab 函数吗? 解决方案 在Matlab中可以使用Java JDK函数. 在 Matlab 中将浮点数(单精度 32 位数字)转换为二进制字符串表示的简短答案可能是: flt=3.14导入 java.lang.Integer java.lang.Float;Integer.toBinaryString(Float.floatToIntBits(f ..
发布时间:2022-01-09 20:01:59 其他开发

如何将浮点数保存为 2 个字节?

是的,我知道 IEEE-754 半精度标准,是的,我知道在该领域所做的工作.简而言之,我试图将一个简单的浮点数(如 52.1 或 1.25)保存在 2 个字节中. 我在 Java 和 C# 但它们通过解码不同的数字来破坏输入值.您输入 32.1 并在编码解码后得到 32.0985. 有什么方法可以在不破坏输入值的情况下以 16 位存储浮点数? 非常感谢. 解决方案 您可以 ..
发布时间:2022-01-09 20:00:01 C#/.NET

浮点精度是可变的还是不变的?

关于浮点数(即 float、double 或 long double)是否只有一个值,我不断得到不同的答案精度,或具有可以变化的精度值. 一个名为 浮点与双精度的话题似乎暗示浮点精度是一种绝对的. 但是,另一个名为 浮点数和双精度数的区别的话题说, 一般来说,double 具有 15 到 16 个十进制数字的精度 另一个来源说, float 类型的变量通常具有大约 7 ..

浮点数转二进制

我正在尝试将浮点数转换为二进制表示;我怎样才能做到这一点?但是,我的目标是不受 2m 的限制,因此我希望可以轻松扩展到任何基础 (3, 4, 8) ecc. 到目前为止,我有一个简单的整数实现: 导入字符串LETTER = '0123456789' + string.ascii_lowercasedef convert_int(num, base):如果基数 == 1:打印“警告!要求 B ..
发布时间:2022-01-09 19:52:34 Python

浮点模运算

我正在尝试实现三角函数的范围缩减操作.但相反,我认为对传入数据执行模 pi/2 运算可能会更好.我想知道存在哪些算法并且对​​于 32 位 IEEE 754 浮点的此操作有效? 我必须在汇编中实现它,所以 fmod、除法、乘法等仅靠一条指令对我来说是不可用的.我的处理器使用 16 位字,我已经实现了 32 位浮点加法、减法、乘法、除法、平方根、余弦和正弦.我只需要范围缩小(模数)来输入余弦和 ..
发布时间:2022-01-09 19:45:28 其他开发

如何在没有除法硬件和没有浮点硬件的二进制中实现浮点除法

我想知道如何在没有除法硬件和浮点硬件的情况下以二进制实现 IEEE-754 32 位单精度浮点除法? 我有移动硬件、加法、减法和乘法. 我已经使用 16 位字实现了浮点乘法、加法和减法. 我正在一个专有的多核处理器上实现这些指令,并用汇编语言编写我的代码.之前,我正在使用 matlab 来验证我的算法. 我知道我需要减去指数,但是如何对尾数执行无符号除法? 解决方案 ..
发布时间:2022-01-09 19:30:56 其他开发

如何在 C# 中获取浮点数的 IEEE 754 二进制表示

我有一些单精度和双精度浮点数,我想从 byte[] 写入和读取..Net 中有什么东西可以用来将它们转换为 32 位和 64 位 IEEE 754 表示吗? 解决方案 .NET Single 和 Double 已经是 IEEE-754 格式.您可以使用 BitConverter.ToSingle() 和 ToDouble() 将 byte[] 转换为浮点数,GetBytes() 反过来. ..
发布时间:2022-01-09 19:25:57 C#/.NET