floating-point - tcl_ precision 的状态如何?

标签 floating-point tcl floating-accuracy ieee-754

我在日常工作中不使用 Tcl。然而,我的一位同事偶尔会与一位客户互动,他希望我们的工具的扩展语言更像 Tcl(!)。他提出的一个主题是 Tcl 如何让他通过全局变量 tcl_ precision 设置 double 值存储的精度。

我做了一些网络搜索,我发现的文档似乎表明情况确实如此(而不仅仅是设置打印精度)。然而,看起来 tcl_ precision 的历史似乎是曲折的。我的印象是,它在一两个版本中被完全删除,然后又放回去,但有关于覆盖默认值 0 的警告和啧啧称赞,这实际上意味着 17(手册 promise 足以代表任何 IEEE第754章

那么谁能告诉我更多关于 tcl_ precision 实际 promise 做什么,以及它对 double 的幕后影响是什么?它只是打印数字的全局设置,还是实际上截断存储的数字的精度(这对我来说似乎很危险)?

最佳答案

我认为您的客户的理解不正确。

我相信 tcl_ precision 变量允许您设置 Tcl 在将实数转换为字符串时显示的有效位数,正如您所建议的。

默认设置为 6:

expr 1.11111111 + 1.11111111
=> 2.22222

如果将其设置为 10,您将得到:

set tcl_precision 10
expr 1.11111111 + 1.11111111
=> 2.22222222

它不会影响 Tcl 在内部用来表示实数的实际方法,该方法被记录为 C 类型 double,提供大约 15 位十进制数字的精度。

关于floating-point - tcl_ precision 的状态如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2286340/

相关文章:

C# 浮点表达式 : strange behavior when casting the result float to int

printing - TCL-如何在屏幕上打印在执行exec命令期间打印的消息?

math - float 学有问题吗?

java - 在 Java 中操作和比较 float

C 对 float 的奇怪近似

javascript - JavaScript 中的简单 float 学

c# - 在 C# 中使用 sql float 的 Nhibernate float 问题

floating-point - 将 ARM gcc 生成的库从软浮点 bi 转换为硬浮点 abi

TCL CSV 引用字符

c - TCL_LINK_STRING 导致段错误(核心已转储)