thank you, i googled around and found msvc double is using 64-bit sse, not x87 fpu
not sure if it's because c++ double has 16 significant figures and js has 15 On Tuesday, June 25, 2019 at 8:51:58 PM UTC+8, Jakob Kummerow wrote: > > If your original C++ code uses doubles, then porting it to > TypeScript/JavaScript should be possible without loss of accuracy (and > using plain built-in Numbers, no external libraries). If you have a > reproducible counter-example, it would be interesting to hear about the > details. > > The only exception I can think of is if your C++ compiler decided to emit > x87 FPU code (on x86 hardware) which would use 80 bits (instead of 64 bits) > for intermediate results. But I don't think modern compilers still do that; > they should emit 64-bit SSE instructions. > > Side note: modern JavaScript has BigInts, which have arbitrary precision, > but only integer values. So they're probably not useful for your case, but > depending on what problem you're solving, you might be able to reformulate > it to use integers. > > > On Tue, Jun 25, 2019 at 2:19 PM Dan Elphick <[email protected] > <javascript:>> wrote: > >> On Tuesday, June 25, 2019 at 10:24:56 AM UTC+1, Jerry Jin wrote: >>> >>> Hello, >>> I'm new to v8-dev, sorry if this was already asked before. >>> >>> my problem is, i re-implemented a c++ numerical lib using typescript, >>> and some test cases failed due to float number not having enough accuracy >>> (i debugged js/c++ code side by side with chrome devtool&msvc) >>> right now, my only option is to user third party lib like `decimal.js` >>> >>> i wonder is there any way to increase float number accuracy like c++ >>> double type? >>> >> >>> example, is there anyway to store more than 15 decimal places in number >>> >> >> Javascript and V8 already use doubles to represent floating point >> numbers. However double precision floating point numbers can have about 16 >> significant figures, so it's not possible to get any more accuracy using >> C++ double. You may be able to print more than that (e.g. pi.ToFixed(30) >> but they won't be accurate beyond 15 decimal places. >> >> >>> ``` >>> > let pi = 3.141592653589793238462643383280; >>> < undefined >>> > pi >>> < 3.141592653589793 >>> ``` >>> >>> not sure if this is possible in v8, if yes, where should i start? >>> >>> thanks! >>> >> -- >> -- >> v8-dev mailing list >> [email protected] <javascript:> >> http://groups.google.com/group/v8-dev >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/v8-dev/cfed0633-c6e7-45c4-a5c0-ca9f6cfaec9a%40googlegroups.com >> >> <https://groups.google.com/d/msgid/v8-dev/cfed0633-c6e7-45c4-a5c0-ca9f6cfaec9a%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/bc1e8872-a93a-405b-94b7-0a8ad01e24f2%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
