速达 将numeric转换为数据类型numeric时发生算术溢出错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了速达 将numeric转换为数据类型numeric时发生算术溢出错误相关的知识,希望对你有一定的参考价值。
在使用速达软件做期末结帐时出现:将numeric转换为数据类型numeric时发生算术溢出错误。是怎么回事?应该怎么样解决呢?大虾们有知道的要告知。如果解决这个难题,将豪赠200分,决不食言。不知道的就请别说了,浪费口水。谢谢
4楼的大哥:我就是计算成本时候出现这个问题的,帐套里面有1万多个单品,我算到4千多给我来这一招,搞晕了。5楼先生:我一张单金额最大也就1、20万,不知道算不算是金额过大的?你说的删除重做也不合适,因为是同一家客户我们这边已经给他底单了,删除重做要怎么做呢?
是由于成本核算方法或负库存所导致。
建议:
1 联系购买经销商,帮你修复.
2 打技术部电话(速达的)020-87384088
3 如果购买VIP卡,处理速度会更快些020-62827888或020-62827999
你自己选择
PS:修复帐套跟帐套升级是没有用的。 参考技术A 应该是计算成本的时候有些产品的成本位数太多,你查下你的产品的成本是不是有不正常的 参考技术B 估计是账套出错了,你可以尝试 修复一下账套,
在 账套管理里面 有一个 功能叫做“修复”,你修复一下出问题的账套,看行不。
如果还是不行,只能把数据发给速达公司修复了。 参考技术C 1、业务结帐的地方有个重新计算成本后再试
2、还是搞不好帐套发过来我帮你搞,看在200分的份上 呵呵
为啥将 SQL Real 转换为 Numeric 时比例会略有增加?
【中文标题】为啥将 SQL Real 转换为 Numeric 时比例会略有增加?【英文标题】:Why when converting SQL Real to Numeric does the scale slightly increase?为什么将 SQL Real 转换为 Numeric 时比例会略有增加? 【发布时间】:2019-09-07 21:44:26 【问题描述】:我将值 (0.15) 作为 Real 数据类型存储在 SQL 的 Quantity 字段中。
只是玩玩,当我投射为数字时,比例有一些非常细微的变化。
我不确定为什么会出现这种情况,以及为什么会出现这些特定数字?
select CAST(Quantity AS numeric(18,18)) -- Quantity being 0.15
返回
0.150000005960464480
【问题讨论】:
【参考方案1】:Real 和 float 是近似数字,而不是精确数字。如果您需要精确的,请使用 DECIMAL。 估计的好处是它们允许使用更少的存储字节存储非常大的数字。 https://docs.microsoft.com/en-us/sql/t-sql/data-types/float-and-real-transact-sql?view=sql-server-2017
PS:数字和小数是同义词。
PS2:请参阅下面 Eric 的 Postpischil 澄清评论: “浮点数和实数将一个数字表示为一个有效数字乘以 2 的幂。十进制表示一个数字作为一个有效数字乘以十的幂。两种表示方式都无法表示所有实数,并且两种表示方式都受制于舍入错误。正如我所写,以十进制格式将 1 除以 3 将产生舍入错误"
【讨论】:
好的,所以它显示了 SQL 实际存储的值,这是估计值,而不是我给它的值。肯定这个数据类型应该是十进制的。Real
和 float
不是估计的,而 decimal
是精确的。 Real
和 float
是基于二进制的,而 decimal
是基于十进制的。 decimal
将 1 除以 3,会得到舍入误差。
正确的术语是近似的而不是估计的。我会更正答案。
@EricPostpischil 所有数据都以二进制形式存储。浮点数和实数使用一种近似算法,该算法放弃了准确性以提高存储效率。
@SQLRaptor: Float
和 real
将数字表示为有效数字乘以 2 的幂。 decimal
表示一个数字作为有效数字乘以十的幂。 两种表示方式都无法表示所有实数,并且两种表示方式都存在舍入误差。正如我所写,以十进制格式将 1 除以 3 会产生舍入误差。以上是关于速达 将numeric转换为数据类型numeric时发生算术溢出错误的主要内容,如果未能解决你的问题,请参考以下文章
将 numeric 转换为数据类型 numeric 时出现算术溢出错误
SQL怎么样把numeric类型的数据转换为varchar类型的数据
SQL怎么样把numeric类型的数据转换为varchar类型的数据
SQL怎么样把numeric类型的数据转换为varchar类型的数据