v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
dtoa.h
Go to the documentation of this file.
1
// Copyright 2011 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_BASE_NUMBERS_DTOA_H_
6
#define V8_BASE_NUMBERS_DTOA_H_
7
8
#include "
src/base/vector.h
"
9
10
namespace
v8
{
11
namespace
base
{
12
13
enum
DtoaMode
{
14
// Return the shortest correct representation.
15
// For example the output of 0.299999999999999988897 is (the less accurate but
16
// correct) 0.3.
17
DTOA_SHORTEST
,
18
// Return a fixed number of digits after the decimal point.
19
// For instance fixed(0.1, 4) becomes 0.1000
20
// If the input number is big, the output will be big.
21
DTOA_FIXED
,
22
// Return a fixed number of digits, no matter what the exponent is.
23
DTOA_PRECISION
24
};
25
26
// The maximal length of digits a double can have in base 10 as returned by
27
// 'DoubleToAscii'. This does neither include sign, decimal point nor exponent.
28
// For example DoubleToAscii(-3.5844466002796428e+298, ..., buffer, ...) will
29
// fill buffer with the string "35844466002796428", while sign and decimal point
30
// position will be provided through additional output arguments.
31
// kBase10MaximalLength refers to the maximal length of this string. Note that
32
// DoubleToAscii null-terminates its input. So the given buffer should be at
33
// least kBase10MaximalLength + 1 characters long.
34
const
int
kBase10MaximalLength
= 17;
35
36
// Converts the given double 'v' to ASCII.
37
// The result should be interpreted as buffer * 10^(point-length).
38
//
39
// The output depends on the given mode:
40
// - SHORTEST: produce the least amount of digits for which the internal
41
// identity requirement is still satisfied. If the digits are printed
42
// (together with the correct exponent) then reading this number will give
43
// 'v' again. The buffer will choose the representation that is closest to
44
// 'v'. If there are two at the same distance, than the one farther away
45
// from 0 is chosen (halfway cases - ending with 5 - are rounded up).
46
// In this mode the 'requested_digits' parameter is ignored.
47
// - FIXED: produces digits necessary to print a given number with
48
// 'requested_digits' digits after the decimal point. The produced digits
49
// might be too short in which case the caller has to fill the gaps with '0's.
50
// Example: toFixed(0.001, 5) is allowed to return buffer="1", point=-2.
51
// Halfway cases are rounded towards +/-Infinity (away from 0). The call
52
// toFixed(0.15, 2) thus returns buffer="2", point=0.
53
// The returned buffer may contain digits that would be truncated from the
54
// shortest representation of the input.
55
// - PRECISION: produces 'requested_digits' where the first digit is not '0'.
56
// Even though the length of produced digits usually equals
57
// 'requested_digits', the function is allowed to return fewer digits, in
58
// which case the caller has to fill the missing digits with '0's.
59
// Halfway cases are again rounded away from 0.
60
// 'DoubleToAscii' expects the given buffer to be big enough to hold all digits
61
// and a terminating null-character. In SHORTEST-mode it expects a buffer of
62
// at least kBase10MaximalLength + 1. Otherwise, the size of the output is
63
// limited to requested_digits digits plus the null terminator.
64
V8_BASE_EXPORT
void
DoubleToAscii
(
double
v,
DtoaMode
mode,
int
requested_digits,
65
Vector<char>
buffer,
int
* sign,
int
* length,
66
int
* point);
67
68
}
// namespace base
69
}
// namespace v8
70
71
#endif
// V8_BASE_NUMBERS_DTOA_H_
V8_BASE_EXPORT
#define V8_BASE_EXPORT
Definition
base-export.h:26
v8::base::Vector
Definition
zone-list.h:15
base
OpIndex base
Definition
instruction-selector-ia32.cc:65
v8::base::DoubleToAscii
void DoubleToAscii(double v, DtoaMode mode, int requested_digits, Vector< char > buffer, int *sign, int *length, int *point)
Definition
dtoa.cc:31
v8::base::kBase10MaximalLength
const int kBase10MaximalLength
Definition
dtoa.h:34
v8::base::DtoaMode
DtoaMode
Definition
dtoa.h:13
v8::base::DTOA_FIXED
@ DTOA_FIXED
Definition
dtoa.h:21
v8::base::DTOA_SHORTEST
@ DTOA_SHORTEST
Definition
dtoa.h:17
v8::base::DTOA_PRECISION
@ DTOA_PRECISION
Definition
dtoa.h:23
v8
Definition
api-arguments-inl.h:19
vector.h
src
base
numbers
dtoa.h
Generated on Sun Apr 6 2025 21:08:50 for v8 by
1.12.0