用于浮点值的最佳变量类型
Best variable types to use for floating-point value
我在SQL Server数据库中有一个FLOAT
列,在SQL Server Management Studio中如下所示。
18:001
当我将该值读入float
变量并使用sprintf()
("%f"(对其进行格式化时,它显示为:
18.000999
当我将该值读入double
变量并使用sprintf()
格式化时,它显示为:
18.001000
我可以得到一些建议吗?存储的值通常小于 100,最多有 3 位小数。什么是最好的 SQL Server 类型?什么是最好的C++类型?我应该使用一些舍入技术来获得我想要的格式吗?
注意:我实际上并没有使用sprintf()
,我使用的是CString.Format()
,但预期的行为是相同的。
存储的值通常小于 100,最多有 3 位小数。
SQL 数据库支持定点值的numeric
/decimal
(两者是同义词(类型。 对于您的特定类型,您可以使用decimal(6, 3)
. 这是六个有效数字,其中三个在小数点的右侧。 这两个值分别称为小数位数和精度。
如果值可能与此值略有不同,则可能需要更大的范围。
有了decimal
/numeric
,所见即所得。 我建议将它们作为定点数存储在数据库中。
回答关于其面值的问题,假设应该使用浮点并且不适用不适用。
除非你真的内存紧张,否则真的没有理由在C++中使用任何东西来计算浮点数,但double
.浮子会失去精度,而不会给您带来太多回报。您也可以尝试long double
,但根据我的经验,这是矫枉过正的。另外,如果您的编译器是MSVC,我听说它long double
与doubles
相同。
除了已经提出的固定逗号小数之外,只需使用普通整数!
而不是存储 18.001秒,你会存储 18001毫秒,你不会存储欧元、英镑、美元,而是存储十分之一美分或便士,......
输入 C++ 也是一个整数,大到足以容纳您需要的最大数字,例如uint32_t
,int64_t
, ...
- 在派生类中使用基类的私有成员变量的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 在 gtests 中测试C++全局变量的最佳方法
- 定义常量变量的最佳方法
- 使用虚拟变量对 std::vector 内部循环进行切片的最佳方法
- 用于浮点值的最佳变量类型
- 许多变量,没有嵌套循环的最佳方法
- 最佳多线程全局变量管理
- 避免使用大量全局变量或使其易于访问和修改的最佳方法
- 为单个函数同时声明多个变量的最佳方式是什么
- 成员变量的初始化必须延迟。此类的最佳设计选择是什么?
- 具有许多成员变量的课程的最佳实践
- C++ - 在一个函数/文件中初始化变量然后在main()/另一个文件中使用它的最佳方法是什么?
- 在java/c++/c/actionscript-3应用程序中使用静态变量的最佳方法是什么?
- 这将是在将函数分配给变量或一次又一次地调用函数之间使用函数结果的最佳方式
- 访问成员变量或访问成员函数是最佳选择
- 获取私有实例变量容器成员值的最佳方式
- 布尔变量的最佳大小是多少