我正在开发一个生成几千个ASCII文件(约束)的工具,其内容包括浮点数。我想通过一个类似的工具来运行这些约束进行比较,这个工具无法处理超过20个小数位的浮点值。手动测试表明简单的截断就足够了。那么,如何将文件中的所有浮点值(由句点唯一标记)截断为不超过20个小数位?
谢谢,
乔恩
答案 0 :(得分:1)
我肯定在Java和C中知道(几乎可以肯定在其他语言中)有格式化字符串的方法。 String.format()和printf()是一些很好的例子。这些可以通过以下方式用于案例:
printf("%.20f", myFloat);
我会在一秒钟内找到一个提供更好说明的网站。
编辑:
这应该是一个足够好的链接来获得一个想法:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
编辑:
如果您想使用sed,快速搜索会让sed看起来好像也有一个printf函数。我找到的例子是:
答案 1 :(得分:1)
如果没有关于您的平台的更多信息以及您熟悉的语言/工具,很难说清楚。
如果您的文件采用逗号或制表符分隔或固定宽度格式,我会尝试使用电子表格应用程序(例如Windows上的Excel或其他平台上的Open Office)。
如果它更复杂,你可以尝试使用perl或python。
像sed(或perl)这样的工具的相关正则表达式是:
s/^([0-9]*\.)([0-9]{20})([0-9]*)$/\1\2/g
这个正则表达式基本上匹配任何数字字符串和一个'。'在里面。它将它分为三个部分:前面和后面包括'。',接下来的20个数字和剩余的数字。然后它输出前两个部分。你应该可以修改它以匹配你的实际模式,而不会使用regular expression reference。
答案 2 :(得分:0)
至少有两种方法可以解决这个问题:
我认为第二种方式是最好的,因为它不依赖于格式化文件。