c# – 十进制值1,5在DB中最终为15 – 为什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 十进制值1,5在DB中最终为15 – 为什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1365字,纯文字阅读大概需要2分钟。
内容图文
![c# – 十进制值1,5在DB中最终为15 – 为什么?](/upload/InfoBanner/zyjiaocheng/801/4f39bfb5bf5240289f9f83995a110b30.jpg)
问候互联网的好人:)
我有一个字符串值“1,5”,它在Convert.ToDecimal()在调试器中查看时最终为1.5M.到目前为止我觉得这么好.然后,十进制值将传递给数据集内的存储过程调用.我感兴趣的参数类型在DB中定义为NUMBER(7,2),因此它应该允许在小数分隔符后面有数字的数字.
问题是,沿着该行的某个位置,十进制值会丢失其分隔符,并将精度与缩放结合起来构成全新的数字,如本文标题中所示.我甚至尝试在该存储过程调用中的参数集合中设置Precision和Scale以匹配DB(7,2),但它也没有帮助.
你知道这里会发生什么吗?
编辑:
这是调用存储过程的代码:
CaseFactory.UtilsAdapter.SetCaseAction(DefId,action,doneBy,assignedTo,comment,status,
searchStatus,priority,access,relStatus,relStatusFixKit,totalhrs,
out Common.RETURN_CODE,out Common.RETURN_TEXT);
=> SetCaseAction只是使用DataSet机制在DB中调用存储过程.
‘totalhrs’是我感兴趣的参数,此时是小数1.5M.我还检查了Oracle中的NLS_NUMERIC_CHARACTERS,它们被设置为’,’
所以它使用逗号表示小数,空格表示成千上万.没有什么不寻常的我能看到那里.唯一奇怪的是,’1,5’最终为’1.5M’,在ToDecimal()之后有一个点,可能会被错误地解释.但是,似乎不太可能,因为我的服务器上的区域设置也使用’,’作为小数分隔符,除非.NET使用一些不同的设置?真的很困惑.
解决方法:
我怀疑你是在没有正确文化的情况下转换它,例如通过ToString()将它连接(而不是使用参数)到TSQL查询中,或者在调用ToDecimal时简单地使用错误的文化. “1小数点5”和“1组分隔符5”之间“1,5”不明确;后一种情况被解析为15.
内容总结
以上是互联网集市为您收集整理的c# – 十进制值1,5在DB中最终为15 – 为什么?全部内容,希望文章能够帮你解决c# – 十进制值1,5在DB中最终为15 – 为什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。