另客网go项目公用的代码库

any_float.go 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package jsoniter
  2. import (
  3. "strconv"
  4. )
  5. type floatAny struct {
  6. baseAny
  7. val float64
  8. }
  9. func (any *floatAny) Parse() *Iterator {
  10. return nil
  11. }
  12. func (any *floatAny) ValueType() ValueType {
  13. return NumberValue
  14. }
  15. func (any *floatAny) MustBeValid() Any {
  16. return any
  17. }
  18. func (any *floatAny) LastError() error {
  19. return nil
  20. }
  21. func (any *floatAny) ToBool() bool {
  22. return any.ToFloat64() != 0
  23. }
  24. func (any *floatAny) ToInt() int {
  25. return int(any.val)
  26. }
  27. func (any *floatAny) ToInt32() int32 {
  28. return int32(any.val)
  29. }
  30. func (any *floatAny) ToInt64() int64 {
  31. return int64(any.val)
  32. }
  33. func (any *floatAny) ToUint() uint {
  34. if any.val > 0 {
  35. return uint(any.val)
  36. }
  37. return 0
  38. }
  39. func (any *floatAny) ToUint32() uint32 {
  40. if any.val > 0 {
  41. return uint32(any.val)
  42. }
  43. return 0
  44. }
  45. func (any *floatAny) ToUint64() uint64 {
  46. if any.val > 0 {
  47. return uint64(any.val)
  48. }
  49. return 0
  50. }
  51. func (any *floatAny) ToFloat32() float32 {
  52. return float32(any.val)
  53. }
  54. func (any *floatAny) ToFloat64() float64 {
  55. return any.val
  56. }
  57. func (any *floatAny) ToString() string {
  58. return strconv.FormatFloat(any.val, 'E', -1, 64)
  59. }
  60. func (any *floatAny) WriteTo(stream *Stream) {
  61. stream.WriteFloat64(any.val)
  62. }
  63. func (any *floatAny) GetInterface() interface{} {
  64. return any.val
  65. }