当前位置: 首页 > 面试题库 >

在多种编程语言(例如C / C ++,D,Go)中寻找具有相似精度的数据类型

佟高澹
2023-03-14
问题内容

我正在尝试使用两种或更多种编程语言来实现带有浮点数的程序。该程序确实说了50k次迭代,最终使误差很小。

为了确保我的结果具有可比性,我想确保使用不同语言的相同精度的数据类型。请问C / C 的float / double与D和Go中的是否对应。我希望C /
C
和D在这方面非常接近,但不确定。非常感谢。


问题答案:

通常,对于编译语言,浮点格式和精度归结为两点:

  1. 用于实现硬件不直接支持的浮点函数的库。
  2. 系统正在运行的硬件。

这也可能取决于您提供的编译器选项(以及编译器的总体复杂程度)-许多现代处理器都具有矢量指令,并且其结果可能与使用“常规”浮点指令(例如FPU与。
x86处理器上的SSE)。有时您可能还会看到差异,因为x86 FPU上的内部计算是80位,计算完成后存储为64位。

但是通常,在相同的硬件和相似的编译器类型的情况下,我期望从两种不同的[足够相似]的语言中获得相同的结果[和大致相同的性能]。

大多数语言只有“ double”(通常是64位)或“ single and double”(例如,浮点数-在C / C ++中通常为32位和double-
通常为64位),也可能是D,但是我而不是D)。



 类似资料:
  • 问题内容: \ …用于多线程网络服务器。 我想在多个线程之间传递数据。目前,我正在使用套接字,主线程阻塞在select()上,而工作线程阻塞在recv()上,尽管我觉得可能有更高级或预包装的方式来处理C++中的此任务。 问题答案: 我会让工作线程在线程池中等待。 然后主机等待选择(用于读取和写入)。 随着数据的到来,主服务器将作业添加到线程池中。添加每个作业后,线程将唤醒以执行该作业并返回到池中。

  • C类语言破解 1、bp MessageBoxA(W)(断对话框)—Ctrl+N 2、Point-H法 3、bp GetDlgItem/GetWindowTextA(W)/GetWindowTextLengthA(W) (断输入框) 4、字符串法—插件/搜索所有参考文本

  • 为什么浮点数据类型的精度不与其大小成正比增长?例如: 正如您所看到的,的精度大约是精度的两倍,这是有意义的,因为的大小是。 但这与双精度和长双精度的情况不同,长双精度的大小是128位,是64位双精度的两倍,但其精度只多出三位!! 我不知道浮点数是如何实现的,但从理性的角度来看,仅为三位精度使用64位内存是否有意义?! 我四处搜索,但没有找到一个简单明了的答案。如果有人能解释为什么长双精度只比双精度

  • 在 Go 语言开篇中我们已经知道,Go 语言与 C 语言之间有着千丝万缕的关系,甚至被称之为 21 世纪的C语言。 所以在 Go 与 C 语言互操作方面,Go 更是提供了强大的支持。尤其是在 Go 中使用 C,你甚至可以直接在 Go 源文件中编写 C 代码,这是其他语言所无法望其项背的。 格式: 在 import "C" 之前通过单行注释或者通过多行注释编写C语言代码 在 import "C" 之

  • 本文向大家介绍linux下c语言的多线程编程,包括了linux下c语言的多线程编程的使用技巧和注意事项,需要的朋友参考一下 我们在写linux的服务的时候,经常会用到linux的多线程技术以提高程序性能  多线程的一些小知识: 一个应用程序可以启动若干个线程。 线程(Lightweight Process,LWP),是程序执行的最小单元。 一般一个最简单的程序最少会有一个线程,就是程序本身,也就是

  • 本文向大家介绍C语言泛型编程实例教程,包括了C语言泛型编程实例教程的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C语言泛型编程的方法,分享给大家供大家参考之用。具体分析如下: 首先,泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。在C语言中,可以通过一些手段实现这样的泛型编程。这里介绍一种方法——通过无类型指针void* 看下面的一个实现交换两个