我有这个代码:
return 1.0 / (1 + exp(-x));
它用于计算给定 x 的 sigmoid 函数的值。问题是它总是返回 1.00000
我开始浏览代码以查看它失败的地方,然后我得到了这个:
long double expV = exp(-x);
long double btm = (1 + expV);
long double calc = 1.0 / btw;
现在变量的值是:
(long double) expV = 3.0356148105583944943E-165
(long double) btm = 1
(long double) calc = 1
所以我的问题是如何解决问题,我应该使用另一种类型的变量还是应该更改代码中的某些内容?
Update btm should be of value: 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030356148105583944943 as WolframAplha said
x 的值为 1,x 的类型是 double 而不是 long double。我将其更改为 long double 并报告。