我们正在数据中心实现Erlang计算,我遇到了一个路障:
Server的float数据类型溢出错误。
如何以仍然可以执行算术的方式来表示Server中超过10^308的值?
Erlang C的计算回答了一个问题:“给定一个预测的呼叫量和估计的处理时间,我们应该安排多少个代理来确保在指定的时间内有足够一部分的呼叫者得到答复?”
例如:我们的服务水平为75%的呼叫必须在60秒内应答。下面的图表探讨了与我们的业务相关的各种数量和处理时间的人员配置。

您可以看到,当所需的代理数量超过大约140时,Server就无法处理所需数量的大小。
这里的问题是公式中间的幂项和阶乘项。

]2
例如,导致第一个错误的计算有V=425和AHT=600:
(425个电话/30m@ 10m/call -> 141个呼叫小时/小时-> 141个erlangs) A=141
从n=142开始评估
float类型只能处理高达1e308的数字。编辑:
@chtz和dmuir给出了我需要的提示。
而不是累积A^i和我!另外,我按照建议将它们聚集在一起,enew版本完美无缺。
SELECT
@acc_ai_if = @acc_ai_if * @intensity / cast(@agentcount as float)
-- @acc_if = @acc_if * @agentcount
--, @acc_ai = @acc_ai * @intensity -- this overflows for N>143
;发布于 2021-03-15 19:14:26
在Server中为A=341和N=1000计算A=341和N=1000
DECLARE @startnum float=1
DECLARE @X float = 1
DECLARE @A float= 341
DECLARE @N float= 1000
;
WITH comp AS (
SELECT @startnum as num,@A as res
UNION ALL
SELECT num+1, res*@A/(num+1) FROM comp WHERE num<@N
)
SELECT res*(@N/(@N-@A))/((SELECT SUM(res) FROM comp where num<@N)+res*(@N/(@N-@A))) FROM comp where num=@N
option (maxrecursion 32000)https://stackoverflow.com/questions/62479983
复制相似问题