标签: ieee-754

IEEE 754中的指数

为什么浮点数的指数被替换为127?
那么,真正的问题是:与2的补码表示法相比,这种符号的优点是什么?

exponent ieee-754

2
推荐指数
1
解决办法
2557
查看次数

JVM是否仅支持IEEE 754所需功能的适当子集?

根据以下链接:

http://sonic.net/~jddarcy/Borneo/

http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf

Java仅支持IEEE 754标准的适当子集.这是否意味着所有JVM语言都是如此?(问题是否可以在字节码级解决?)如果我想利用支持这些功能的硬件,有没有办法在Oracle的JVM上执行此操作?如果没有,叉子是否存在呢?

java jvm ieee-754

2
推荐指数
1
解决办法
184
查看次数

为什么我的浮动被截断了?

27.8675309IEEE 754转换器的"十进制表示"字段中输入一个值会更改我输入的值27.86753.同样,当解析具有相同值的字符串时,Java会丢弃最后两位数字.

Float.parseFloat("27.8675309") // Results in a float value of 27.86753
Run Code Online (Sandbox Code Playgroud)

我不确定IEEE转换器的"十进制表示"实际上是什么(它是浮点数吗?)但是我希望它能给出最大数量:

  1. 是浮点值
  2. 不超过我输入的原始值

我希望Java能够以类似的方式运行,也就是说,我希望上面的代码行返回一个浮点值等于27.8675308或者更大的浮点值,它更接近我的原始输入,而不是只丢弃小数位.我在这里错过了什么?

java floating-point ieee-754

2
推荐指数
1
解决办法
320
查看次数

如何将存储IEEE 754浮点数的4个字节转换为C中的浮点值?

我的程序从文件中读取4个字节的IEEE 754浮点数.我需要将这些字节可移植地转换为我的C编译器浮点类型.换句话说,我需要一个函数与float IEEE_754_to_float(uint8_t raw_value[4])我的C程序的原型.

c floating-point ieee-754

2
推荐指数
1
解决办法
6775
查看次数

是否可以将所有32位整数精确地表示为双精度?

可能重复:
IEEE 754浮点数不能准确表示的第一个整数是什么?

这是一个基本问题,我的答案是肯定的(int = 32位,double = 53位螳螂+符号位)。

基本上可以断言?

int x = get_random_int();
double dx = x;
int x1 = (int) dx;
assert(x1 ==x);
if  (INT_MAX-10>x)
 {
       dx+=10;
       int x2=(int) dx;
       assert(x+10 == x2);
 }
Run Code Online (Sandbox Code Playgroud)

显然,涉及带有除法和类似内容的复杂表达式的内容((int)(5.0 / 3 * 3)与5/3 * 3是不同的),但我想知道转换和加减运算是否有效(如果没有溢出发生)保持等价。

double ieee-754

2
推荐指数
1
解决办法
836
查看次数

浮点数比c ++小于IEEE 754

我尝试进行以下划分:1/16777216,等于5.96046448e-8 但是这个:

printf("number: %f \n", 1.0f / 16777216.0f);      
Run Code Online (Sandbox Code Playgroud)

总是给我0.00000而不是我期望的答案.我抬起了范围,因为我认为,这可能是一个问题,浮动只是为了处理这样一个数字,但IEEE 754声明它±1.18×10?38.

我错过了什么,这就是为什么结果不是预期的结果?

c++ floating-point ieee-754

2
推荐指数
1
解决办法
182
查看次数

我可以将UInt32,Int32和浮点值存储在double中而不会丢失信息吗?

我需要在变量中保存UInt32,Int32和float值.我可以使用double而不会丢失信息(例如,在转换中丢失一些数字)或者我是否需要使用任意精度等级?

从我目前的研究看起来我可以,因为我可以存储UInt32的最大值而不会丢失信息:

Assert.AreEqual(UInt32.MaxValue, Convert.ToUInt32(Convert.ToDouble(UInt32.MaxValue)));
Run Code Online (Sandbox Code Playgroud)
  • 因此,double应该支持足够的数字来表示小于或等于UInt32.MaxValue的所有数字.
  • 无论如何,Int32的值范围较小,因此也支持它.
  • 还应支持Float,因为它只是精度较低的两倍.

我错过了什么吗?

c# precision double type-conversion ieee-754

2
推荐指数
1
解决办法
1128
查看次数

浮点比较是否连续?如果!(a <= b)是(b> a)保证?

是否保证浮点:

  • (a <= b) 暗示 !(b > a)
  • !(a <= b) 暗示 b > a

我目前正在处理跨语言,但如果需要,你可以假设一个floatdouble一个C,C++或C#.假设没有NaN参与.

我认为IEEE的规则适用于此.我不确定他们的订购规则是否意味着上述内容.

我特别关注的是,a并且b并不总是相同的变量,而是相同的值.它们总是来自完全相同的计算.但是,由于比较是在不同的代码位置完成的,我不能保证它们是否总是存储/截断的形式(最终可能具有扩展的精度).

因为我正在寻找保证,答案应包括提供这些保证的参考,或正式/强烈暗示保证.

floating-point ieee-754

2
推荐指数
1
解决办法
164
查看次数

IEEE浮点运算提供了哪些约束?

在以下断言中,(对于符合要求的实现)哪些是保证的,哪些不是?

  1. a + b是有限的==> a + b = b + a
  2. a*b是有限的==> a*b = b*a
  3. a是有限的==> a = - ( - a)
  4. a是有限的==> aa = 0
  5. a是有限的==> 0*a = 0
  6. ab = 0 ==> a = b
  7. a = b ==> ab = 0
  8. a = b和c + a是有限的==> c + a = c + b
  9. a> b ==> ab> 0
  10. ab> 0 ==> a> b

(请编辑此问题并使列表覆盖更多并具有有机外观.)

floating-point standards ieee-754

2
推荐指数
1
解决办法
64
查看次数

在IEEE 754中,为什么在无操作中添加负零会产生但是添加正零则不会?

我在Rust中使用了一些算法(尽管这个语言对我的问题并不重要).考虑一下代码:

#[no_mangle]
pub fn test(x: f32) -> f32 {
    let m = 0.;
    x + m
}

fn main() {
    test(2.);
}
Run Code Online (Sandbox Code Playgroud)

它生成以下LLVM IR和相应的x86_64 asm(已启用优化):

;; LLVM IR
define float @test(float %x) unnamed_addr #0 {
start:
    %0 = fadd float %x, 0.000000e+00
    ret float %0
}

;; x86_64
; test:
    xorps xmm1, xmm1
    addss xmm0, xmm1
    ret
Run Code Online (Sandbox Code Playgroud)

如果我更改let m = 0.;let m = -0.;浮点,则添加优化:

;; LLVM IR
define float @test(float returned %x) unnamed_addr #0 {
start: …
Run Code Online (Sandbox Code Playgroud)

floating-point ieee-754

2
推荐指数
1
解决办法
116
查看次数

标签 统计

ieee-754 ×10

floating-point ×6

double ×2

java ×2

c ×1

c# ×1

c++ ×1

exponent ×1

jvm ×1

precision ×1

standards ×1

type-conversion ×1