是的,我知道很难相信 - .NET中的错误?但是在命令行应用程序中运行此代码:
decimal x;
x = decimal.Parse("3.E-2", NumberStyles.Float);
Console.WriteLine(x);
x = decimal.Parse("5.72e9", NumberStyles.Float);
Console.WriteLine(x);
x = decimal.Parse("3.E?2", NumberStyles.Float);
Console.WriteLine(x);
我在最后一次解析时遇到异常.他说:
System.FormatException : Input string was not in a correct format.
第一个和最后一个解析的值完全相同.在针对.NET 3.5和4编译的两台不同的x64机器上进行了测试.
知道发生了什么事吗?任何解决方法?
从我的Perl程序,我试图运行另一个用C语言编写的命令system.该命令需要几个参数:字符串,浮点数,两个整数,一对浮点数和另一个字符串.我正在运行这个
my $arg1="electron";
my $arg2=0.511;
# more definitions
system("./fermions $arg1 $arg2 $arg3 $arg4 " .
"$arg5 $arg6 \"string\" > outfile.out");
Run Code Online (Sandbox Code Playgroud)
我需要改变$arg5几个不同的浮点值.我通过设置$arg5="1.0e5"然后在for循环中运行if语句来将其更改为字符串.我希望能够像花车那样做,并尝试
system("./fermions $arg1 $arg2 $arg3 $arg4 " .
"%e $arg6 \"string\" >outfile.out",
$arg5);
Run Code Online (Sandbox Code Playgroud)
但那没用.还有另一种选择,或者我的if语句选项是唯一的吗?
我知道如何检查String是否为数字.但是,如何检查String是否为数字且String是否为科学计数法?
这是我尝试过的:我编写了一个算法,只是检查字符串是否包含"E",但我不确定这是否足够.
我正在寻找像这样的方法实现:
public boolean isScientificNotation(String numberString) {
//show me the implementation
}
Run Code Online (Sandbox Code Playgroud) 我在使用大数和长十进制数时遇到问题,正如其他人提到或使用PrecisionEvaluate解决了这样的问题,我无法通过这样的函数获得一致的结果.
此代码示例:
<cfset n = 0.000000000009>
<cfoutput>#precisionEvaluate(n)#</cfoutput> // this will produce "9E-12"
<cfoutput>#precisionEvaluate("n")#</cfoutput> // this will produce "0.000000000009"
Run Code Online (Sandbox Code Playgroud)
根据Adobe文档,不建议使用Quote(由于处理效率低)以及它应该产生相同的结果,但是上述代码不是这种情况.
结果不一致的进一步试验:
<cfset n = 0.000000000009>
<cfset r = 12567.8903>
<cfoutput>#precisionEvaluate(r * n)#</cfoutput> // this will produce "1.131110127E-7"
<cfoutput>#precisionEvaluate("r * n")#</cfoutput> // this will produce "1.131110127E-7", same as above
<cfoutput>#precisionEvaluate(r / n)#</cfoutput> // this will produce "1396432255555555.55555555555555555556"
<cfoutput>#precisionEvaluate("r / n")#</cfoutput> // this will produce "1396432255555555.55555555555555555556", same as above
Run Code Online (Sandbox Code Playgroud)
有没有人遇到类似案件的问题?解决不一致问题的实用解决方案是什么?我试过:使用val()函数没有解决,因为它仅限于短数,使用numberFormat()函数很难,因为我们必须传递小数位数才能正确格式化.
我正在尝试使用Clojure解决pythonchallenge问题:
(java.lang.Math/pow 2 38)
Run Code Online (Sandbox Code Playgroud)
我有
2.74877906944E11
Run Code Online (Sandbox Code Playgroud)
但是,我需要关闭这种科学记数法.我搜索了clojure文档,仍然不知道该怎么做.在Clojure中是否有通用的方法来切换开/关科学记数法?
谢谢.
我试图将这些数字转换为二进制科学记数法,但我无法弄清楚这个过程。有人可以请解决这个问题的过程吗?
对于 IEEE 754 单精度浮点数,用二进制科学记数法书写的数字是多少,其十六进制表示如下?
0061 0000
我可以将其从十六进制转换为无符号二进制:
0000 0000 0110 0001 0000 0000 0000 0000
但我无法弄清楚如何使用二进制科学记数法正确表示这一点。提前致谢!
如何摆脱factor变量的默认科学记数法?R当我在当前情况下有 3 个或更多数字时使用它。
我查看了其他答案(scipen和other、format),但它们似乎不适用于factor变量。
然后我在图例中使用这个因子变量,并且我需要整数或定点值。
options(scipen=999)
plot(0,0, type="l", lty=1, lwd=4);
var1 <- c(3334,341,36,341,456)
cut1 <- cut(var1, breaks=2)
cut1<-levels(cut1)
cut1<-gsub(","," - ",cut1)
cut1<-gsub("\\(","[",cut1)
#cut1 <- as.character(cut1);
#formatC(cut1, digits="10", format="f")
cut1
Run Code Online (Sandbox Code Playgroud)
[1]“[32.7 - 1.68e+03]”“[1.68e+03 - 3.34e+03]
我想要这样的东西:
[1]“[32.7 - 1680]”“[1680 - 3340]”
我们在应用程序中向代理显示不带尾随零的百分比值(50%比现在更容易快速扫描50.000%),到目前为止,我们只是使用quantize强力标准化该值以删除尾随零。
今天早上我决定考虑使用它Decimal.normalize,但遇到了这个:
给定十进制值:
>>> value = Decimal('50.000')
Run Code Online (Sandbox Code Playgroud)
标准化该值:
>>> value = value.normalize()
Run Code Online (Sandbox Code Playgroud)
结果是:
>>> value
Decimal('5E+1')
Run Code Online (Sandbox Code Playgroud)
我理解值是相同的:
>>> Decimal('5E+1') == Decimal('50')
True
Run Code Online (Sandbox Code Playgroud)
但从非技术用户的角度来看,5E+1基本上是没有意义的。
有办法转换Decimal('5E+1')成Decimal('50')吗?
我不想做任何会改变 的值的事情Decimal(例如,完全删除小数位),因为该值可能是例如Decimal('33.333'). IOW,不要将我的50.000示例混淆为我们只处理整数。
我有一个火花聚合,我想将结果输出到 csv,但我发现火花总是以科学记数法输出大量小数。我已经尝试过这个问题中提到的解决方案,但也没有奏效。
预期输出:
foo,avg(bar)
a,0.0000002
b,0.0000001
Run Code Online (Sandbox Code Playgroud)
实际输出:
foo,avg(bar)
a,2.0E-7
b,1.0E-7
Run Code Online (Sandbox Code Playgroud)
请参阅下面的示例:
foo,avg(bar)
a,0.0000002
b,0.0000001
Run Code Online (Sandbox Code Playgroud)
在 pyspark 外壳中:
foo,avg(bar)
a,2.0E-7
b,1.0E-7
Run Code Online (Sandbox Code Playgroud) In [1]: from decimal import Decimal
In [2]: Decimal('0.00000100') * Decimal('0.95')
Out[2]: Decimal('9.500E-7')
In [3]: Decimal('9.500E-7').quantize(Decimal('0.00000000'))
Out[3]: Decimal('9.5E-7')
Run Code Online (Sandbox Code Playgroud)
如何抑制科学记数法并得到'0.00000095'?