Ich entschied mich, es auszuprobieren. Die Genauigkeit der normalen js-Zahlen beginnt bei der Dateigröße von 3-4PB nicht zu reichen. In Firefox haben also Integer etwa 55 Bit Genauigkeit. Ich schätze, das kann von Browsern abweichen, aber ich brauche das für nodejs.
console.log("start");
var B = 8;
var KB = 1024*B;
var MB = 1024*KB;
var GB = 1024*MB;
var TB = 1024*GB;
var PB = 1024*TB;
var EB = 1024*PB;
var maxBits = 4 * PB;
var bitSteps = 100 * TB;
var maxChunkSize = 333 * B;
for (var bits = 0; bits <= maxBits; bits += bitSteps)
for (var chunkSize = 1; chunkSize <= maxChunkSize; ++chunkSize) {
var calculatedChunkCount = Math.ceil(bits/chunkSize);
var calculatedBits = calculatedChunkCount * chunkSize;
var difference = calculatedBits - bits;
var error = difference>= chunkSize || difference<0;
if (error)
console.log({
chunkSize: chunkSize,
calculatedChunkCount: calculatedChunkCount,
bits: bits,
calculatedBits: calculatedBits,
difference: difference
});
}
console.log("end");
Ausgang:
{ chunkSize: 97, calculatedChunkCount: 290180388361501, bits: 28147497671065600, calculatedBits: 28147497671065596, difference: -4 }
{ chunkSize: 1579, calculatedChunkCount: 20611490932343, bits: 32545544182169600, calculatedBits: 32545544182169596, difference: -4 }
Ich werde einen parallel NodeJS Skript für Nacht beginnen, nur um sicher zu sein, aber ich denke, dass Präzision genug ist, im Bereich von 0 - 100 GB-Bereich.
Nach einer anderen Antwort: https://stackoverflow.com/a/2803010/607033 js Ganzzahlen sind bis zu 53 Bits genau. Also könnte diese Unterteilungsgrenze nahe bei diesem Wert liegen, vielleicht ein paar Bits niedriger.
Da Ihr Wert "2.5" sein kann, werden Sie wahrscheinlich die Präzision verlieren ... –
@JonasW. Es spielt keine Rolle bei 2.5, da das Ergebnis von "ceil" dasselbe sein wird. – inf3rno