我有一个数据库查看器,我添加了一个数字查看器属性。当值都是正确的时,它工作正常。当值为负时,我收到错误:
网页错误详情
用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322 ; MS-RTC LM 8; InfoPath.2; .NET4.0C; .NET4.0E) 时间戳:星期四,2013年5月23日14:20:57 UTC
消息:Silverlight应用程序中未处理的错误StartIndex不能小于零。
参数名称:System.String.InternalSubStringWithChecks中的startIndex(Int32 startIndex,Int32 length,Boolean fAlwaysCopy)
在System.String.Substring(Int32 startIndex,Int32 length)
在Microsoft.Internal.Pivot.Model.HistogramBucketer.CalculateFormatAndFractions(ICollection 1 numbers, String& formatString, Decimal& divFactor)
at Microsoft.Internal.Pivot.ViewModels.RangeFacetCategoryViewModel.CalculateFormatAndFractions(ICollection
1个值)
在Microsoft.Internal.Pivot.ViewModels.RangeFacetCategoryViewModel.OnModelChanged(RangeFacetCategory oldModel,RangeFacetCategory newModel)
在Microsoft.Internal.Pivot.ViewModels.ViewModelBase`1.SetModel(Object newModel)
在Microsoft.Internal.Pivot.ViewModels.FilterPaneViewModel.SynchronizeCategories()
在Microsoft.Internal.Pivot.ViewModels.FilterPaneViewModel.b__4()
线:1
Char:1
代码:0
我无法想象我不能拥有负面价值。我传递的值非常小(-.00009825等),但我无法想象这会产生影响。我缺少一个设置吗?谢谢
答案 0 :(得分:0)
我认为你疯了,直到我在一个最小的PivotViewer控件中自己尝试并得到了同样的错误!
经过一些更多的实验,似乎问题不在于负数,而在于包含四个或五个前导零的尾数(小数部分),具体取决于第一个非零数字的值。
具有四个前导零的值,如0.00001,-1.00002,2.00003,-3.00004都将导致您的错误。 Mantissas .00005到0.00009 做工作,大概是因为值被四舍五入,例如0.00005“=”0.0001。
此处描述了同样的问题:(http://social.msdn.microsoft.com/Forums/en-US/silverlightpivotviewer/thread/03f0e782-f2d8-4c70-86f2-93560a8d6151/)
他们的解决方法:将小数点四舍五入到四个位置,你应该没问题。如果您的数据处于超级紧密的范围内,您需要在PivotViewer中获得这种精确度,我会乘以1000并以某种方式表明值已缩放。
PS这个行为肯定似乎有些错误 - 我猜测神奇的四位小数限制与以下事实有关:当在过滤器面板中的数字属性的直方图中拖动滑块时,它会显示指示滑块当前值的文本 - 精确到四位小数。也许在它上面放五位小数会让它变得繁荣?