JavaScriptのBigInt
public.icon
999999999999999998を2で割ると、499999999999999999となるが、jsでa/bをすると500000000000000000となる
これは JavaScript では、大きな数値演算を正確に行うのが難しいためです。JavaScript の場合、Number 型で表現される数値はIEEE-754 浮動小数点表現 (倍精度) を使用しています。この表現では、非常に大きな数値や小数点以下の数値で精度が失われることがあります。 その代わりに、BigInt を使用して問題を解決できます。BigInt は任意の大きさの整数を正確に扱うことができます。GPT-4.icon BigInt同士を割って整数で切り上げるコード書いて
code:index.ts
function divideAndRoundUp(bigintA, bigintB) {
const res = (bigintA + bigintB - BigInt(1)) / bigintB;
return res;
}
const a = BigInt("999999999999999998");
const b = BigInt("2");
const result = divideAndRoundUp(a, b);
console.log(result.toString()); // あなたが期待した "500000000000000000" が得られます。
GPT-4.icon