C语言中的浮点数组
我正在开发一个代码,其中我必须在文本文件中一次加载存储在每行中的浮点值…我使用fscanf()将这些数据加载到浮点数组中…但是我发现浮点是以不同的方式存储的,例如407.18存储为407.179993,414.35作为414.350006…现在我被卡住了,因为数字存储在文件中的形式是绝对重要的,但在这里,尽管本质上是相同的,但似乎是不同的…我如何让数字存储在原始形式中?如果数字存储在文件中的形式是绝对重要的话在文件中,不使用浮点值。并非所有小数的10进制值都可以用二进制精确表示 有关详细信息,请参阅文章[PDF链接]C语言中的浮点数组,c,file-io,floating-point,C,File Io,Floating Point,我正在开发一个代码,其中我必须在文本文件中一次加载存储在每行中的浮点值…我使用fscanf()将这些数据加载到浮点数组中…但是我发现浮点是以不同的方式存储的,例如407.18存储为407.179993,414.35作为414.350006…现在我被卡住了,因为数字存储在文件中的形式是绝对重要的,但在这里,尽管本质上是相同的,但似乎是不同的…我如何让数字存储在原始形式中?如果数字存储在文件中的形式是绝对重要的话在文件中,不使用浮点值。并非所有小数的10进制值都可以用二进制精确表示 有关详细信息,请
您应该以字符串形式或按比例整数形式存储数字。如果绝对重要的是数字必须以文件中的形式存储,不要使用浮点值。并非所有小数的10进制值都可以用二进制精确表示 有关详细信息,请参阅文章[PDF链接]
您应该以字符串形式或缩放整数形式存储数字。您看到的是正确的,因为浮点不能准确地表示许多实数。这是必须阅读的:您看到的是正确的,因为浮点不能准确地表示许多实数。这是必须阅读的: < P> C++ >代码>浮点< /COD>和<代码>双类型被表示为IEEE浮点数字。有二进制浮点数,而不是小数。它们没有无限精度,即使是相对“简单”的十进制值,在转换为二进制浮点数并返回时也会发生变化
专注于货币的语言(例如COBOL和PL/I)具有十进制数据类型,这些数据类型使用较慢的表示形式,而没有这个问题。在C或C++中有用于此目的的库,或者如果不需要太多的范围,可以使用缩放整数。 < P> C++ >代码>浮点< /C> >和<代码>双< /C> >类型被表示为IEEE浮点号。有二进制浮点数,而不是小数。它们没有无限精度,即使是相对“简单”的十进制值,在转换为二进制浮点数并返回时也会发生变化
专注于货币的语言(例如COBOL和PL/I)具有十进制数据类型,这些数据类型使用较慢的表示形式,而没有这个问题。在C或C++中有用于此目的的库,或者如果不需要太多的范围,可以使用缩放的整数。 您可能需要查看现有的实现控制点的浮点的库。我用过。它是快速和开源的。如果您使用的是货币,那么另一个库会更好。您可能需要查看一个现有的库,该库实现了带受控舍入的浮点运算。我用过。它是快速和开源的。如果你在用钱工作,那么另一个图书馆会更好, 需要澄清的是:您声明“…绝对重要的是,数字必须以文件中的形式存储”-这是什么‘形式’?我假设是一张展示表格?!这里的交易:如果你存储在文件407.18,但它显示为407.179993-这是完全正常和预期的。当您构建sprintf或正在使用的任何格式化打印时,必须指示它限制小数点后的精度。这应该可以做到:
#include <stdio.h>
void main(void);
void main()
{
printf("%.2f",407.179993);
}
#包括
空总管(空);
void main()
{
printf(“%.2f”,407.179993);
}
s因素,
需要澄清的是:您声明“…绝对重要的是,数字必须以文件中的形式存储”-这是什么‘形式’?我假设是一张展示表格?!这里的交易:如果你存储在文件407.18,但它显示为407.179993-这是完全正常和预期的。当您构建sprintf或正在使用的任何格式化打印时,必须指示它限制小数点后的精度。这应该可以做到:
#include <stdio.h>
void main(void);
void main()
{
printf("%.2f",407.179993);
}
#包括
空总管(空);
void main()
{
printf(“%.2f”,407.179993);
}
存储数字的方法有很多种,每种方法都有各自的优缺点
在您的情况下,浮点数不是最佳选择,因为它们不能准确地表示大多数实数
缩放整数是一种常见的设计习惯用法:将表示与表示分开
决定小数点后需要多少位数,例如123,45中的2位数。然后,您应该在内部将数字表示为整数12345。无论何时向用户显示值,都应在相关点插入小数点
短
在讨论缩放整数之前,请仔细检查您的问题域,断言浮点数中的“松弛”足够重要,可以使用缩放整数进行验证。存储数字的方法有很多种,每种方法都有各自的优缺点 在您的情况下,浮点数不是最佳选择,因为它们不能准确地表示大多数实数 缩放整数是一种常见的设计习惯用法:将表示与表示分开 决定小数点后需要多少位数,例如123,45中的2位数。然后,您应该在内部将数字表示为整数12345。无论何时向用户显示值,都应在相关点插入小数点 短
在讨论缩放整数之前,请仔细检查您的问题域,断言浮点数中的“松弛”足够重要,可以使用缩放整数进行验证。+1获取文章链接;我不知道有一个HT