2016-05-04 13 views
2

Wenn ich diesen JavaScript-Code haben:Werden Float32Array-Operationen in Double konvertiert?

var a = new Float32Array(4); 
var b = new Float32Array(4); 
var r = new Float32Array(4); 

//fill here "a" and "b" with random numbers 

r[0] = a[0] + b[0]; 
r[1] = a[1] - b[1]; 
r[2] = a[2] * b[2]; 
r[3] = a[3]/b[3]; 

Sind jene Schwimmer, bevor Sie die Vorgänge zu verdoppeln umgewandelt?
Wenn ich die gleichen float32-Operationen auf C++ und Javascript-Code (keine sqrt(), sin(), tan() ... etc) ausführen, werden die Floats den gleichen Wert für diese beiden Sprachen beibehalten?

+0

@ RaymondChen offensichtlich. Löschen meines Kommentars Vielen Dank. –

Antwort

2

JavaScript mathematische Operationen (+, -, *, /) werden immer mit 64-Bit-Doppel getan. Typisierte Arrays sind über die Speicherinterpretation; Sobald ein Wert aus einem typisierten Array abgerufen wird, handelt es sich um eine einfache JavaScript-Nummer.

Es gibt Fälle, in denen der Wert in einer Zahl als Ganzzahl behandelt wird, aber die Zahlen sind immer noch 64-Bit-Doppel.

Verwandte Themen