使用浮点数时,在0和1之间进行归一化是否好
When working with floating point numbers, is it good to normalize between 0 and 1?
我的数字在1e10和1e11之间。为了准确起见,在进行任何计算和/或比较之前,将这些数字归一化为[0;1]更好吗?我想知道,因为我听说在0和1之间,可表示的数字比从1到无穷多。然而,我找不到这方面的消息来源。
您不能增加现有浮点数的精度。不存在可以通过归一化恢复的"隐藏"精度,相反,归一化更有可能由于舍入误差而降低数字的精度。也就是说,如果首先以某种方式对输入进行归一化,那么有些数学运算可能会产生更精确的结果,但这具体取决于您正在执行的运算。
浮点数字存储在内存中,嗯,浮点,即科学记数法。即1.23456789e10
、1.23456789e-10
和1.23456789
都将保持相同数量的有效数字。
的确,从数学上讲,0和1之间有无穷多个数字(这将是Aleph-1?),但这与讨论无关,因为一个浮点变量只能容纳这么多不同的值。例如,一个4字节的浮点变量有32位,因此不可能产生超过2^32个不同的浮点值。
相关文章:
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- std::memmove在同一对象之间是否始终安全
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 是否有一种标准方法来计算两个 asctime() 值之间的天数
- 是否允许类在程序中的不同翻译单元之间具有不同的定义?
- std::weak_ptr 和相应的 std::shared_ptr 之间是否存在数据竞争?
- 在调用函数时,ptr** 和 ptr*& 之间是否有区别,或者首选C++?
- C++:这两种将数字写入矩阵的方式之间是否存在显着的速度差异?
- Vulkan是否需要在多个具有透明度的平局调用之间进行同步
- 如果我的容器位于两个现有值之间,那么伪造迭代器类别是否合理
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- c++ 内联友元函数是否会导致命名空间之间的名称隐藏?
- C++显示两个区间之间的数字的程序检查一个数字是否可以表示为两个素数的总和
- char 和 char& 之间是否存在相对复制开销差异?
- libstdc++的make_shared布局在gcc 4.x和gcc 6.x之间是否发生了变化?
- 我是否应该避免在循环中的常数之间进行操作
- SOL2/C++ - Lua初学者,是否可以在Lua文件之间传递Lua表
- Libssh2:在"每个线程的通道"基础上在线程之间共享 ssh 会话是否安全?