HandyJSON icon indicating copy to clipboard operation
HandyJSON copied to clipboard

从后台接收到的数据 NSNumber(35189664246870017)前端通过String 接收 模型转换之后打印字符串的值为35189664246870016

Open focus-ming opened this issue 4 years ago • 12 comments

非常紧急 希望看到回复一下

focus-ming avatar Jun 01 '20 04:06 focus-ming

自己测试 35189664246870015 解析后打印值还是 35189664246870016 35189664246870010 解析后打印值还是 35189664246870008

focus-ming avatar Jun 01 '20 04:06 focus-ming

35189664246870018解析后打印值是 35189664246870016 35189664246870019解析后打印值是 35189664246870020 35189664246870011解析后打印值是 35189664246870012 35189664246870013解析后打印值是 35189664246870012 35189664246870014解析后打印值是 35189664246870016 35189664246870016解析后打印值是 35189664246870016

focus-ming avatar Jun 01 '20 05:06 focus-ming

服务端传输给客户端肯定是字符串的形式,你也说是用字符串接收的,字符串接收字符串不可能值不对。你检查一下自己代码吧,是不是哪里自己做了转换

On Mon, Jun 1, 2020 at 13:04 focus-ming [email protected] wrote:

35189664246870018解析后打印值是 35189664246870016 35189664246870019解析后打印值是 35189664246870020 35189664246870011解析后打印值是 35189664246870012 35189664246870013解析后打印值是 35189664246870012 35189664246870014解析后打印值是 35189664246870016 35189664246870016解析后打印值是 35189664246870016

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/alibaba/HandyJSON/issues/382#issuecomment-636614421, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QOHIL5HRHUFFNFIBMDRUMZENANCNFSM4NPP3FUA .

lynnleelhl avatar Jun 01 '20 05:06 lynnleelhl

服务端传输给客户端肯定是字符串的形式,你也说是用字符串接收的,字符串接收字符串不可能值不对。你检查一下自己代码吧,是不是哪里自己做了转换 On Mon, Jun 1, 2020 at 13:04 focus-ming @.***> wrote: 35189664246870018解析后打印值是 35189664246870016 35189664246870019解析后打印值是 35189664246870020 35189664246870011解析后打印值是 35189664246870012 35189664246870013解析后打印值是 35189664246870012 35189664246870014解析后打印值是 35189664246870016 35189664246870016解析后打印值是 35189664246870016 — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#382 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QOHIL5HRHUFFNFIBMDRUMZENANCNFSM4NPP3FUA .

服务端返回的是数字 我用字符串接收的

focus-ming avatar Jun 01 '20 05:06 focus-ming

测试了35189664246870000到35189664246870090之前的数字 不一致的有这么多 解析前的值为:35189664246870001 解析后的值为35189664246870000 解析前的值为:35189664246870002 解析后的值为35189664246870000 解析前的值为:35189664246870003 解析后的值为35189664246870004 解析前的值为:35189664246870005 解析后的值为35189664246870004 解析前的值为:35189664246870006 解析后的值为35189664246870008 解析前的值为:35189664246870007 解析后的值为35189664246870008 解析前的值为:35189664246870009 解析后的值为35189664246870008 解析前的值为:35189664246870010 解析后的值为35189664246870008 解析前的值为:35189664246870011 解析后的值为35189664246870012 解析前的值为:35189664246870013 解析后的值为35189664246870012 解析前的值为:35189664246870014 解析后的值为35189664246870016 解析前的值为:35189664246870015 解析后的值为35189664246870016 解析前的值为:35189664246870017 解析后的值为35189664246870016 解析前的值为:35189664246870018 解析后的值为35189664246870016 解析前的值为:35189664246870019 解析后的值为35189664246870020 解析前的值为:35189664246870021 解析后的值为35189664246870020 解析前的值为:35189664246870022 解析后的值为35189664246870024 解析前的值为:35189664246870023 解析后的值为35189664246870024 解析前的值为:35189664246870025 解析后的值为35189664246870024 解析前的值为:35189664246870026 解析后的值为35189664246870024 解析前的值为:35189664246870027 解析后的值为35189664246870028 解析前的值为:35189664246870029 解析后的值为35189664246870028 解析前的值为:35189664246870030 解析后的值为35189664246870032 解析前的值为:35189664246870031 解析后的值为35189664246870032 解析前的值为:35189664246870033 解析后的值为35189664246870032 解析前的值为:35189664246870034 解析后的值为35189664246870032 解析前的值为:35189664246870035 解析后的值为35189664246870036 解析前的值为:35189664246870037 解析后的值为35189664246870036 解析前的值为:35189664246870038 解析后的值为35189664246870040 解析前的值为:35189664246870039 解析后的值为35189664246870040 解析前的值为:35189664246870041 解析后的值为35189664246870040 解析前的值为:35189664246870042 解析后的值为35189664246870040 解析前的值为:35189664246870043 解析后的值为35189664246870044 解析前的值为:35189664246870045 解析后的值为35189664246870044 解析前的值为:35189664246870046 解析后的值为35189664246870048 解析前的值为:35189664246870047 解析后的值为35189664246870048 解析前的值为:35189664246870049 解析后的值为35189664246870048 解析前的值为:35189664246870050 解析后的值为35189664246870048 解析前的值为:35189664246870051 解析后的值为35189664246870052 解析前的值为:35189664246870053 解析后的值为35189664246870052 解析前的值为:35189664246870054 解析后的值为35189664246870056 解析前的值为:35189664246870055 解析后的值为35189664246870056 解析前的值为:35189664246870057 解析后的值为35189664246870056 解析前的值为:35189664246870058 解析后的值为35189664246870056 解析前的值为:35189664246870059 解析后的值为35189664246870060 解析前的值为:35189664246870061 解析后的值为35189664246870060 解析前的值为:35189664246870062 解析后的值为35189664246870064 解析前的值为:35189664246870063 解析后的值为35189664246870064 解析前的值为:35189664246870065 解析后的值为35189664246870064 解析前的值为:35189664246870066 解析后的值为35189664246870064 解析前的值为:35189664246870067 解析后的值为35189664246870068 解析前的值为:35189664246870069 解析后的值为35189664246870068 解析前的值为:35189664246870070 解析后的值为35189664246870072 解析前的值为:35189664246870071 解析后的值为35189664246870072 解析前的值为:35189664246870073 解析后的值为35189664246870072 解析前的值为:35189664246870074 解析后的值为35189664246870072 解析前的值为:35189664246870075 解析后的值为35189664246870076 解析前的值为:35189664246870077 解析后的值为35189664246870076 解析前的值为:35189664246870078 解析后的值为35189664246870080 解析前的值为:35189664246870079 解析后的值为35189664246870080 解析前的值为:35189664246870081 解析后的值为35189664246870080 解析前的值为:35189664246870082 解析后的值为35189664246870080 解析前的值为:35189664246870083 解析后的值为35189664246870084 解析前的值为:35189664246870085 解析后的值为35189664246870084 解析前的值为:35189664246870086 解析后的值为35189664246870088 解析前的值为:35189664246870087 解析后的值为35189664246870088 解析前的值为:35189664246870089 解析后的值为35189664246870088 解析前的值为:35189664246870090 解析后的值为35189664246870088

focus-ming avatar Jun 01 '20 05:06 focus-ming

数字就用数字接收啊,你用 int64 接收就行了吧

On Mon, Jun 1, 2020 at 13:28 focus-ming [email protected] wrote:

测试了35189664246870000到35189664246870090之前的数字 不一致的有这么多 解析前的值为:35189664246870001 解析后的值为35189664246870000 解析前的值为:35189664246870002 解析后的值为35189664246870000 解析前的值为:35189664246870003 解析后的值为35189664246870004 解析前的值为:35189664246870005 解析后的值为35189664246870004 解析前的值为:35189664246870006 解析后的值为35189664246870008 解析前的值为:35189664246870007 解析后的值为35189664246870008 解析前的值为:35189664246870009 解析后的值为35189664246870008 解析前的值为:35189664246870010 解析后的值为35189664246870008 解析前的值为:35189664246870011 解析后的值为35189664246870012 解析前的值为:35189664246870013 解析后的值为35189664246870012 解析前的值为:35189664246870014 解析后的值为35189664246870016 解析前的值为:35189664246870015 解析后的值为35189664246870016 解析前的值为:35189664246870017 解析后的值为35189664246870016 解析前的值为:35189664246870018 解析后的值为35189664246870016 解析前的值为:35189664246870019 解析后的值为35189664246870020 解析前的值为:35189664246870021 解析后的值为35189664246870020 解析前的值为:35189664246870022 解析后的值为35189664246870024 解析前的值为:35189664246870023 解析后的值为35189664246870024 解析前的值为:35189664246870025 解析后的值为35189664246870024 解析前的值为:35189664246870026 解析后的值为35189664246870024 解析前的值为:35189664246870027 解析后的值为35189664246870028 解析前的值为:35189664246870029 解析后的值为35189664246870028 解析前的值为:35189664246870030 解析后的值为35189664246870032 解析前的值为:35189664246870031 解析后的值为35189664246870032 解析前的值为:35189664246870033 解析后的值为35189664246870032 解析前的值为:35189664246870034 解析后的值为35189664246870032 解析前的值为:35189664246870035 解析后的值为35189664246870036 解析前的值为:35189664246870037 解析后的值为35189664246870036 解析前的值为:35189664246870038 解析后的值为35189664246870040 解析前的值为:35189664246870039 解析后的值为35189664246870040 解析前的值为:35189664246870041 解析后的值为35189664246870040 解析前的值为:35189664246870042 解析后的值为35189664246870040 解析前的值为:35189664246870043 解析后的值为35189664246870044 解析前的值为:35189664246870045 解析后的值为35189664246870044 解析前的值为:35189664246870046 解析后的值为35189664246870048 解析前的值为:35189664246870047 解析后的值为35189664246870048 解析前的值为:35189664246870049 解析后的值为35189664246870048 解析前的值为:35189664246870050 解析后的值为35189664246870048 解析前的值为:35189664246870051 解析后的值为35189664246870052 解析前的值为:35189664246870053 解析后的值为35189664246870052 解析前的值为:35189664246870054 解析后的值为35189664246870056 解析前的值为:35189664246870055 解析后的值为35189664246870056 解析前的值为:35189664246870057 解析后的值为35189664246870056 解析前的值为:35189664246870058 解析后的值为35189664246870056 解析前的值为:35189664246870059 解析后的值为35189664246870060 解析前的值为:35189664246870061 解析后的值为35189664246870060 解析前的值为:35189664246870062 解析后的值为35189664246870064 解析前的值为:35189664246870063 解析后的值为35189664246870064 解析前的值为:35189664246870065 解析后的值为35189664246870064 解析前的值为:35189664246870066 解析后的值为35189664246870064 解析前的值为:35189664246870067 解析后的值为35189664246870068 解析前的值为:35189664246870069 解析后的值为35189664246870068 解析前的值为:35189664246870070 解析后的值为35189664246870072 解析前的值为:35189664246870071 解析后的值为35189664246870072 解析前的值为:35189664246870073 解析后的值为35189664246870072 解析前的值为:35189664246870074 解析后的值为35189664246870072 解析前的值为:35189664246870075 解析后的值为35189664246870076 解析前的值为:35189664246870077 解析后的值为35189664246870076 解析前的值为:35189664246870078 解析后的值为35189664246870080 解析前的值为:35189664246870079 解析后的值为35189664246870080 解析前的值为:35189664246870081 解析后的值为35189664246870080 解析前的值为:35189664246870082 解析后的值为35189664246870080 解析前的值为:35189664246870083 解析后的值为35189664246870084 解析前的值为:35189664246870085 解析后的值为35189664246870084 解析前的值为:35189664246870086 解析后的值为35189664246870088 解析前的值为:35189664246870087 解析后的值为35189664246870088 解析前的值为:35189664246870089 解析后的值为35189664246870088 解析前的值为:35189664246870090 解析后的值为35189664246870088

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/alibaba/HandyJSON/issues/382#issuecomment-636620636, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QNGYZAGLV2J7Q22EMDRUM4AJANCNFSM4NPP3FUA .

lynnleelhl avatar Jun 01 '20 05:06 lynnleelhl

数字就用数字接收啊,你用 int64 接收就行了吧 On Mon, Jun 1, 2020 at 13:28 focus-ming @.***> wrote: 测试了35189664246870000到35189664246870090之前的数字 不一致的有这么多 解析前的值为:35189664246870001 解析后的值为35189664246870000 解析前的值为:35189664246870002 解析后的值为35189664246870000 解析前的值为:35189664246870003 解析后的值为35189664246870004 解析前的值为:35189664246870005 解析后的值为35189664246870004 解析前的值为:35189664246870006 解析后的值为35189664246870008 解析前的值为:35189664246870007 解析后的值为35189664246870008 解析前的值为:35189664246870009 解析后的值为35189664246870008 解析前的值为:35189664246870010 解析后的值为35189664246870008 解析前的值为:35189664246870011 解析后的值为35189664246870012 解析前的值为:35189664246870013 解析后的值为35189664246870012 解析前的值为:35189664246870014 解析后的值为35189664246870016 解析前的值为:35189664246870015 解析后的值为35189664246870016 解析前的值为:35189664246870017 解析后的值为35189664246870016 解析前的值为:35189664246870018 解析后的值为35189664246870016 解析前的值为:35189664246870019 解析后的值为35189664246870020 解析前的值为:35189664246870021 解析后的值为35189664246870020 解析前的值为:35189664246870022 解析后的值为35189664246870024 解析前的值为:35189664246870023 解析后的值为35189664246870024 解析前的值为:35189664246870025 解析后的值为35189664246870024 解析前的值为:35189664246870026 解析后的值为35189664246870024 解析前的值为:35189664246870027 解析后的值为35189664246870028 解析前的值为:35189664246870029 解析后的值为35189664246870028 解析前的值为:35189664246870030 解析后的值为35189664246870032 解析前的值为:35189664246870031 解析后的值为35189664246870032 解析前的值为:35189664246870033 解析后的值为35189664246870032 解析前的值为:35189664246870034 解析后的值为35189664246870032 解析前的值为:35189664246870035 解析后的值为35189664246870036 解析前的值为:35189664246870037 解析后的值为35189664246870036 解析前的值为:35189664246870038 解析后的值为35189664246870040 解析前的值为:35189664246870039 解析后的值为35189664246870040 解析前的值为:35189664246870041 解析后的值为35189664246870040 解析前的值为:35189664246870042 解析后的值为35189664246870040 解析前的值为:35189664246870043 解析后的值为35189664246870044 解析前的值为:35189664246870045 解析后的值为35189664246870044 解析前的值为:35189664246870046 解析后的值为35189664246870048 解析前的值为:35189664246870047 解析后的值为35189664246870048 解析前的值为:35189664246870049 解析后的值为35189664246870048 解析前的值为:35189664246870050 解析后的值为35189664246870048 解析前的值为:35189664246870051 解析后的值为35189664246870052 解析前的值为:35189664246870053 解析后的值为35189664246870052 解析前的值为:35189664246870054 解析后的值为35189664246870056 解析前的值为:35189664246870055 解析后的值为35189664246870056 解析前的值为:35189664246870057 解析后的值为35189664246870056 解析前的值为:35189664246870058 解析后的值为35189664246870056 解析前的值为:35189664246870059 解析后的值为35189664246870060 解析前的值为:35189664246870061 解析后的值为35189664246870060 解析前的值为:35189664246870062 解析后的值为35189664246870064 解析前的值为:35189664246870063 解析后的值为35189664246870064 解析前的值为:35189664246870065 解析后的值为35189664246870064 解析前的值为:35189664246870066 解析后的值为35189664246870064 解析前的值为:35189664246870067 解析后的值为35189664246870068 解析前的值为:35189664246870069 解析后的值为35189664246870068 解析前的值为:35189664246870070 解析后的值为35189664246870072 解析前的值为:35189664246870071 解析后的值为35189664246870072 解析前的值为:35189664246870073 解析后的值为35189664246870072 解析前的值为:35189664246870074 解析后的值为35189664246870072 解析前的值为:35189664246870075 解析后的值为35189664246870076 解析前的值为:35189664246870077 解析后的值为35189664246870076 解析前的值为:35189664246870078 解析后的值为35189664246870080 解析前的值为:35189664246870079 解析后的值为35189664246870080 解析前的值为:35189664246870081 解析后的值为35189664246870080 解析前的值为:35189664246870082 解析后的值为35189664246870080 解析前的值为:35189664246870083 解析后的值为35189664246870084 解析前的值为:35189664246870085 解析后的值为35189664246870084 解析前的值为:35189664246870086 解析后的值为35189664246870088 解析前的值为:35189664246870087 解析后的值为35189664246870088 解析前的值为:35189664246870089 解析后的值为35189664246870088 解析前的值为:35189664246870090 解析后的值为35189664246870088 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#382 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QNGYZAGLV2J7Q22EMDRUM4AJANCNFSM4NPP3FUA .

Handyjson 是支持string接收数字的 如果不支持 我也不会这么用的。类型匹配的接收是没问题的,现在我提的issues也很明确指出数字转字符串这种情况。

focus-ming avatar Jun 01 '20 05:06 focus-ming

理论上确实支持自动转换,我只是看你挺急的想快点帮你解决问题。 那你提供一个可复现的 demo 吧。

On Mon, Jun 1, 2020 at 13:36 focus-ming [email protected] wrote:

数字就用数字接收啊,你用 int64 接收就行了吧 … <#m_-2787293337902544662_> On Mon, Jun 1, 2020 at 13:28 focus-ming @.***> wrote: 测试了35189664246870000到35189664246870090之前的数字 不一致的有这么多 解析前的值为:35189664246870001 解析后的值为35189664246870000 解析前的值为:35189664246870002 解析后的值为35189664246870000 解析前的值为:35189664246870003 解析后的值为35189664246870004 解析前的值为:35189664246870005 解析后的值为35189664246870004 解析前的值为:35189664246870006 解析后的值为35189664246870008 解析前的值为:35189664246870007 解析后的值为35189664246870008 解析前的值为:35189664246870009 解析后的值为35189664246870008 解析前的值为:35189664246870010 解析后的值为35189664246870008 解析前的值为:35189664246870011 解析后的值为35189664246870012 解析前的值为:35189664246870013 解析后的值为35189664246870012 解析前的值为:35189664246870014 解析后的值为35189664246870016 解析前的值为:35189664246870015 解析后的值为35189664246870016 解析前的值为:35189664246870017 解析后的值为35189664246870016 解析前的值为:35189664246870018 解析后的值为35189664246870016 解析前的值为:35189664246870019 解析后的值为35189664246870020 解析前的值为:35189664246870021 解析后的值为35189664246870020 解析前的值为:35189664246870022 解析后的值为35189664246870024 解析前的值为:35189664246870023 解析后的值为35189664246870024 解析前的值为:35189664246870025 解析后的值为35189664246870024 解析前的值为:35189664246870026 解析后的值为35189664246870024 解析前的值为:35189664246870027 解析后的值为35189664246870028 解析前的值为:35189664246870029 解析后的值为35189664246870028 解析前的值为:35189664246870030 解析后的值为35189664246870032 解析前的值为:35189664246870031 解析后的值为35189664246870032 解析前的值为:35189664246870033 解析后的值为35189664246870032 解析前的值为:35189664246870034 解析后的值为35189664246870032 解析前的值为:35189664246870035 解析后的值为35189664246870036 解析前的值为:35189664246870037 解析后的值为35189664246870036 解析前的值为:35189664246870038 解析后的值为35189664246870040 解析前的值为:35189664246870039 解析后的值为35189664246870040 解析前的值为:35189664246870041 解析后的值为35189664246870040 解析前的值为:35189664246870042 解析后的值为35189664246870040 解析前的值为:35189664246870043 解析后的值为35189664246870044 解析前的值为:35189664246870045 解析后的值为35189664246870044 解析前的值为:35189664246870046 解析后的值为35189664246870048 解析前的值为:35189664246870047 解析后的值为35189664246870048 解析前的值为:35189664246870049 解析后的值为35189664246870048 解析前的值为:35189664246870050 解析后的值为35189664246870048 解析前的值为:35189664246870051 解析后的值为35189664246870052 解析前的值为:35189664246870053 解析后的值为35189664246870052 解析前的值为:35189664246870054 解析后的值为35189664246870056 解析前的值为:35189664246870055 解析后的值为35189664246870056 解析前的值为:35189664246870057 解析后的值为35189664246870056 解析前的值为:35189664246870058 解析后的值为35189664246870056 解析前的值为:35189664246870059 解析后的值为35189664246870060 解析前的值为:35189664246870061 解析后的值为35189664246870060 解析前的值为:35189664246870062 解析后的值为35189664246870064 解析前的值为:35189664246870063 解析后的值为35189664246870064 解析前的值为:35189664246870065 解析后的值为35189664246870064 解析前的值为:35189664246870066 解析后的值为35189664246870064 解析前的值为:35189664246870067 解析后的值为35189664246870068 解析前的值为:35189664246870069 解析后的值为35189664246870068 解析前的值为:35189664246870070 解析后的值为35189664246870072 解析前的值为:35189664246870071 解析后的值为35189664246870072 解析前的值为:35189664246870073 解析后的值为35189664246870072 解析前的值为:35189664246870074 解析后的值为35189664246870072 解析前的值为:35189664246870075 解析后的值为35189664246870076 解析前的值为:35189664246870077 解析后的值为35189664246870076 解析前的值为:35189664246870078 解析后的值为35189664246870080 解析前的值为:35189664246870079 解析后的值为35189664246870080 解析前的值为:35189664246870081 解析后的值为35189664246870080 解析前的值为:35189664246870082 解析后的值为35189664246870080 解析前的值为:35189664246870083 解析后的值为35189664246870084 解析前的值为:35189664246870085 解析后的值为35189664246870084 解析前的值为:35189664246870086 解析后的值为35189664246870088 解析前的值为:35189664246870087 解析后的值为35189664246870088 解析前的值为:35189664246870089 解析后的值为35189664246870088 解析前的值为:35189664246870090 解析后的值为35189664246870088 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#382 (comment) https://github.com/alibaba/HandyJSON/issues/382#issuecomment-636620636>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QNGYZAGLV2J7Q22EMDRUM4AJANCNFSM4NPP3FUA .

Handyjson 是支持string接收数字的 如果不支持 我也不会这么用的。类型匹配的接收是没问题的,现在我提的issues也很明确指出数字转字符串这种情况。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/alibaba/HandyJSON/issues/382#issuecomment-636622887, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QO5S322B3RBYXIYO5DRUM46BANCNFSM4NPP3FUA .

lynnleelhl avatar Jun 01 '20 05:06 lynnleelhl

理论上确实支持自动转换,我只是看你挺急的想快点帮你解决问题。 那你提供一个可复现的 demo 吧。 On Mon, Jun 1, 2020 at 13:36 focus-ming @.> wrote: 数字就用数字接收啊,你用 int64 接收就行了吧 … <#m_-2787293337902544662_> On Mon, Jun 1, 2020 at 13:28 focus-ming @.> wrote: 测试了35189664246870000到35189664246870090之前的数字 不一致的有这么多 解析前的值为:35189664246870001 解析后的值为35189664246870000 解析前的值为:35189664246870002 解析后的值为35189664246870000 解析前的值为:35189664246870003 解析后的值为35189664246870004 解析前的值为:35189664246870005 解析后的值为35189664246870004 解析前的值为:35189664246870006 解析后的值为35189664246870008 解析前的值为:35189664246870007 解析后的值为35189664246870008 解析前的值为:35189664246870009 解析后的值为35189664246870008 解析前的值为:35189664246870010 解析后的值为35189664246870008 解析前的值为:35189664246870011 解析后的值为35189664246870012 解析前的值为:35189664246870013 解析后的值为35189664246870012 解析前的值为:35189664246870014 解析后的值为35189664246870016 解析前的值为:35189664246870015 解析后的值为35189664246870016 解析前的值为:35189664246870017 解析后的值为35189664246870016 解析前的值为:35189664246870018 解析后的值为35189664246870016 解析前的值为:35189664246870019 解析后的值为35189664246870020 解析前的值为:35189664246870021 解析后的值为35189664246870020 解析前的值为:35189664246870022 解析后的值为35189664246870024 解析前的值为:35189664246870023 解析后的值为35189664246870024 解析前的值为:35189664246870025 解析后的值为35189664246870024 解析前的值为:35189664246870026 解析后的值为35189664246870024 解析前的值为:35189664246870027 解析后的值为35189664246870028 解析前的值为:35189664246870029 解析后的值为35189664246870028 解析前的值为:35189664246870030 解析后的值为35189664246870032 解析前的值为:35189664246870031 解析后的值为35189664246870032 解析前的值为:35189664246870033 解析后的值为35189664246870032 解析前的值为:35189664246870034 解析后的值为35189664246870032 解析前的值为:35189664246870035 解析后的值为35189664246870036 解析前的值为:35189664246870037 解析后的值为35189664246870036 解析前的值为:35189664246870038 解析后的值为35189664246870040 解析前的值为:35189664246870039 解析后的值为35189664246870040 解析前的值为:35189664246870041 解析后的值为35189664246870040 解析前的值为:35189664246870042 解析后的值为35189664246870040 解析前的值为:35189664246870043 解析后的值为35189664246870044 解析前的值为:35189664246870045 解析后的值为35189664246870044 解析前的值为:35189664246870046 解析后的值为35189664246870048 解析前的值为:35189664246870047 解析后的值为35189664246870048 解析前的值为:35189664246870049 解析后的值为35189664246870048 解析前的值为:35189664246870050 解析后的值为35189664246870048 解析前的值为:35189664246870051 解析后的值为35189664246870052 解析前的值为:35189664246870053 解析后的值为35189664246870052 解析前的值为:35189664246870054 解析后的值为35189664246870056 解析前的值为:35189664246870055 解析后的值为35189664246870056 解析前的值为:35189664246870057 解析后的值为35189664246870056 解析前的值为:35189664246870058 解析后的值为35189664246870056 解析前的值为:35189664246870059 解析后的值为35189664246870060 解析前的值为:35189664246870061 解析后的值为35189664246870060 解析前的值为:35189664246870062 解析后的值为35189664246870064 解析前的值为:35189664246870063 解析后的值为35189664246870064 解析前的值为:35189664246870065 解析后的值为35189664246870064 解析前的值为:35189664246870066 解析后的值为35189664246870064 解析前的值为:35189664246870067 解析后的值为35189664246870068 解析前的值为:35189664246870069 解析后的值为35189664246870068 解析前的值为:35189664246870070 解析后的值为35189664246870072 解析前的值为:35189664246870071 解析后的值为35189664246870072 解析前的值为:35189664246870073 解析后的值为35189664246870072 解析前的值为:35189664246870074 解析后的值为35189664246870072 解析前的值为:35189664246870075 解析后的值为35189664246870076 解析前的值为:35189664246870077 解析后的值为35189664246870076 解析前的值为:35189664246870078 解析后的值为35189664246870080 解析前的值为:35189664246870079 解析后的值为35189664246870080 解析前的值为:35189664246870081 解析后的值为35189664246870080 解析前的值为:35189664246870082 解析后的值为35189664246870080 解析前的值为:35189664246870083 解析后的值为35189664246870084 解析前的值为:35189664246870085 解析后的值为35189664246870084 解析前的值为:35189664246870086 解析后的值为35189664246870088 解析前的值为:35189664246870087 解析后的值为35189664246870088 解析前的值为:35189664246870089 解析后的值为35189664246870088 解析前的值为:35189664246870090 解析后的值为35189664246870088 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#382 (comment) <#382 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QNGYZAGLV2J7Q22EMDRUM4AJANCNFSM4NPP3FUA . Handyjson 是支持string接收数字的 如果不支持 我也不会这么用的。类型匹配的接收是没问题的,现在我提的issues也很明确指出数字转字符串这种情况。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#382 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QO5S322B3RBYXIYO5DRUM46BANCNFSM4NPP3FUA .

import UIKit class testModel: MFBaseModel { var test: String = "" }

class TestViewController: UIViewController { @IBOutlet weak var testView: UITextView! override func viewDidLoad() { super.viewDidLoad() for i in 35189664246870000...35189664246870090 { let dic = ["test": i] let str = dic.jsonString() let model = testModel.deserialize(from: str) if i != model?.test.int ?? 0 { testView.text.append("解析前的值为:(i)\n 解析后的值为(model?.test.int ?? 0)\n") } } }

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // Get the new view controller using segue.destination.
    // Pass the selected object to the new view controller.
}
*/

}

focus-ming avatar Jun 01 '20 05:06 focus-ming

理论上确实支持自动转换,我只是看你挺急的想快点帮你解决问题。 那你提供一个可复现的 demo 吧。 On Mon, Jun 1, 2020 at 13:36 focus-ming @.> wrote: 数字就用数字接收啊,你用 int64 接收就行了吧 … <#m_-2787293337902544662_> On Mon, Jun 1, 2020 at 13:28 focus-ming @.> wrote: 测试了35189664246870000到35189664246870090之前的数字 不一致的有这么多 解析前的值为:35189664246870001 解析后的值为35189664246870000 解析前的值为:35189664246870002 解析后的值为35189664246870000 解析前的值为:35189664246870003 解析后的值为35189664246870004 解析前的值为:35189664246870005 解析后的值为35189664246870004 解析前的值为:35189664246870006 解析后的值为35189664246870008 解析前的值为:35189664246870007 解析后的值为35189664246870008 解析前的值为:35189664246870009 解析后的值为35189664246870008 解析前的值为:35189664246870010 解析后的值为35189664246870008 解析前的值为:35189664246870011 解析后的值为35189664246870012 解析前的值为:35189664246870013 解析后的值为35189664246870012 解析前的值为:35189664246870014 解析后的值为35189664246870016 解析前的值为:35189664246870015 解析后的值为35189664246870016 解析前的值为:35189664246870017 解析后的值为35189664246870016 解析前的值为:35189664246870018 解析后的值为35189664246870016 解析前的值为:35189664246870019 解析后的值为35189664246870020 解析前的值为:35189664246870021 解析后的值为35189664246870020 解析前的值为:35189664246870022 解析后的值为35189664246870024 解析前的值为:35189664246870023 解析后的值为35189664246870024 解析前的值为:35189664246870025 解析后的值为35189664246870024 解析前的值为:35189664246870026 解析后的值为35189664246870024 解析前的值为:35189664246870027 解析后的值为35189664246870028 解析前的值为:35189664246870029 解析后的值为35189664246870028 解析前的值为:35189664246870030 解析后的值为35189664246870032 解析前的值为:35189664246870031 解析后的值为35189664246870032 解析前的值为:35189664246870033 解析后的值为35189664246870032 解析前的值为:35189664246870034 解析后的值为35189664246870032 解析前的值为:35189664246870035 解析后的值为35189664246870036 解析前的值为:35189664246870037 解析后的值为35189664246870036 解析前的值为:35189664246870038 解析后的值为35189664246870040 解析前的值为:35189664246870039 解析后的值为35189664246870040 解析前的值为:35189664246870041 解析后的值为35189664246870040 解析前的值为:35189664246870042 解析后的值为35189664246870040 解析前的值为:35189664246870043 解析后的值为35189664246870044 解析前的值为:35189664246870045 解析后的值为35189664246870044 解析前的值为:35189664246870046 解析后的值为35189664246870048 解析前的值为:35189664246870047 解析后的值为35189664246870048 解析前的值为:35189664246870049 解析后的值为35189664246870048 解析前的值为:35189664246870050 解析后的值为35189664246870048 解析前的值为:35189664246870051 解析后的值为35189664246870052 解析前的值为:35189664246870053 解析后的值为35189664246870052 解析前的值为:35189664246870054 解析后的值为35189664246870056 解析前的值为:35189664246870055 解析后的值为35189664246870056 解析前的值为:35189664246870057 解析后的值为35189664246870056 解析前的值为:35189664246870058 解析后的值为35189664246870056 解析前的值为:35189664246870059 解析后的值为35189664246870060 解析前的值为:35189664246870061 解析后的值为35189664246870060 解析前的值为:35189664246870062 解析后的值为35189664246870064 解析前的值为:35189664246870063 解析后的值为35189664246870064 解析前的值为:35189664246870065 解析后的值为35189664246870064 解析前的值为:35189664246870066 解析后的值为35189664246870064 解析前的值为:35189664246870067 解析后的值为35189664246870068 解析前的值为:35189664246870069 解析后的值为35189664246870068 解析前的值为:35189664246870070 解析后的值为35189664246870072 解析前的值为:35189664246870071 解析后的值为35189664246870072 解析前的值为:35189664246870073 解析后的值为35189664246870072 解析前的值为:35189664246870074 解析后的值为35189664246870072 解析前的值为:35189664246870075 解析后的值为35189664246870076 解析前的值为:35189664246870077 解析后的值为35189664246870076 解析前的值为:35189664246870078 解析后的值为35189664246870080 解析前的值为:35189664246870079 解析后的值为35189664246870080 解析前的值为:35189664246870081 解析后的值为35189664246870080 解析前的值为:35189664246870082 解析后的值为35189664246870080 解析前的值为:35189664246870083 解析后的值为35189664246870084 解析前的值为:35189664246870085 解析后的值为35189664246870084 解析前的值为:35189664246870086 解析后的值为35189664246870088 解析前的值为:35189664246870087 解析后的值为35189664246870088 解析前的值为:35189664246870089 解析后的值为35189664246870088 解析前的值为:35189664246870090 解析后的值为35189664246870088 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#382 (comment) <#382 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QNGYZAGLV2J7Q22EMDRUM4AJANCNFSM4NPP3FUA . Handyjson 是支持string接收数字的 如果不支持 我也不会这么用的。类型匹配的接收是没问题的,现在我提的issues也很明确指出数字转字符串这种情况。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#382 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOL2QO5S322B3RBYXIYO5DRUM46BANCNFSM4NPP3FUA .

感谢老哥。

focus-ming avatar Jun 01 '20 05:06 focus-ming

你好 昨天经过测试基本断定NumberFormatter 在17位转换时 苹果的Bug 出现这个问题为以下方法的 中的这句:formatter.string(from: num) extension String: _BuiltInBasicType {

static func _transform(from object: Any) -> String? {
    switch object {
    case let str as String:
        return str
    case let num as NSNumber:
        // Boolean Type Inside
        if NSStringFromClass(type(of: num)) == "__NSCFBoolean" {
            if num.boolValue {
                return "true"
            } else {
                return "false"
            }
        }
        return formatter.string(from: num)
    case _ as NSNull:
        return nil
    default:
        return "\(object)"
    }
}

func _plainValue() -> Any? {
    return self
}

}

希望作者能够换掉NumberFormatter的方式 以解决这个问题

focus-ming avatar Jun 02 '20 03:06 focus-ming

转为 Decimal 后再转换即可。

let num: NSNumber = NSNumber(value: 35189664246870009) let d1 = Decimal(num.int64Value) print(formatter.string(from: d1 as NSNumber))

参考此回答

NSNumberFormatter 内部会使用双精度浮点数来进行转换,而浮点数是无法精确表示大部分实数的

neil-wu avatar Sep 01 '20 09:09 neil-wu