@@ -31,6 +31,7 @@ const (
31
31
32
32
// Decimal64 represents an IEEE 754 64-bit floating point decimal number.
33
33
// It uses the binary representation method.
34
+ // Decimal64 is intentionally a struct to ensure users don't accidentally cast it to uint64
34
35
type Decimal64 struct {
35
36
bits uint64
36
37
}
@@ -241,8 +242,8 @@ func (d Decimal64) parts() (fl flavor, sign int, exp int, significand uint64) {
241
242
242
243
// getParts gets the parts and returns in decParts stuct, doesn't get the magnitude due to performance issues\
243
244
func (d Decimal64 ) getParts () decParts {
244
- flavor , sign , exp , significand := d .parts ()
245
- return decParts {flavor , sign , exp , uint128T {significand , 0 }, & d }
245
+ flav , sign , exp , significand := d .parts ()
246
+ return decParts {flav , sign , exp , uint128T {significand , 0 }, & d }
246
247
}
247
248
248
249
func expWholeFrac (exp int , significand uint64 ) (exp2 int , whole uint64 , frac uint64 ) {
@@ -279,8 +280,8 @@ func expWholeFrac(exp int, significand uint64) (exp2 int, whole uint64, frac uin
279
280
280
281
// Float64 returns a float64 representation of d.
281
282
func (d Decimal64 ) Float64 () float64 {
282
- flavor , sign , exp , significand := d .parts ()
283
- switch flavor {
283
+ flav , sign , exp , significand := d .parts ()
284
+ switch flav {
284
285
case flNormal :
285
286
if significand == 0 {
286
287
return 0.0 * float64 (1 - 2 * sign )
@@ -301,8 +302,8 @@ func (d Decimal64) Float64() float64 {
301
302
302
303
// Int64 converts d to an int64.
303
304
func (d Decimal64 ) Int64 () int64 {
304
- flavor , sign , exp , significand := d .parts ()
305
- switch flavor {
305
+ flav , sign , exp , significand := d .parts ()
306
+ switch flav {
306
307
case flInf :
307
308
if sign == 0 {
308
309
return math .MaxInt64
@@ -327,38 +328,38 @@ func (d Decimal64) Int64() int64 {
327
328
328
329
// IsZero returns true if the Decimal encodes a zero value.
329
330
func (d Decimal64 ) IsZero () bool {
330
- fl , _ , _ , significand := d .parts ()
331
- return significand == 0 && fl == flNormal
331
+ flav , _ , _ , significand := d .parts ()
332
+ return significand == 0 && flav == flNormal
332
333
}
333
334
334
335
// IsInf returns true iff d = ±∞.
335
336
func (d Decimal64 ) IsInf () bool {
336
- flavor , _ , _ , _ := d .parts ()
337
- return flavor == flInf
337
+ flav , _ , _ , _ := d .parts ()
338
+ return flav == flInf
338
339
}
339
340
340
341
// IsNaN returns true iff d is not a number.
341
342
func (d Decimal64 ) IsNaN () bool {
342
- flavor , _ , _ , _ := d .parts ()
343
- return flavor == flQNaN || flavor == flSNaN
343
+ flav , _ , _ , _ := d .parts ()
344
+ return flav == flQNaN || flav == flSNaN
344
345
}
345
346
346
347
// IsQNaN returns true iff d is a quiet NaN.
347
348
func (d Decimal64 ) IsQNaN () bool {
348
- flavor , _ , _ , _ := d .parts ()
349
- return flavor == flQNaN
349
+ flav , _ , _ , _ := d .parts ()
350
+ return flav == flQNaN
350
351
}
351
352
352
353
// IsSNaN returns true iff d is a signalling NaN.
353
354
func (d Decimal64 ) IsSNaN () bool {
354
- flavor , _ , _ , _ := d .parts ()
355
- return flavor == flSNaN
355
+ flav , _ , _ , _ := d .parts ()
356
+ return flav == flSNaN
356
357
}
357
358
358
359
// IsInt returns true iff d is an integer.
359
360
func (d Decimal64 ) IsInt () bool {
360
- fl , _ , exp , significand := d .parts ()
361
- switch fl {
361
+ flav , _ , exp , significand := d .parts ()
362
+ switch flav {
362
363
case flNormal :
363
364
_ , _ , frac := expWholeFrac (exp , significand )
364
365
return frac == 0
@@ -369,8 +370,8 @@ func (d Decimal64) IsInt() bool {
369
370
370
371
// IsSubnormal returns true iff d is a subnormal.
371
372
func (d Decimal64 ) IsSubnormal () bool {
372
- fl , _ , _ , significand := d .parts ()
373
- return significand != 0 && significand < decimal64Base && fl == flNormal
373
+ flav , _ , _ , significand := d .parts ()
374
+ return significand != 0 && significand < decimal64Base && flav == flNormal
374
375
}
375
376
376
377
// Sign returns -1/0/1 depending on whether d is </=/> 0.
0 commit comments