我开发了一个小脚本来模拟Powershell中的Syracuse猜想。
我使用的是非常大的数字,我正在Excel图表中研究结果,但是当它们太大时,powershell会不断格式化我的数字:
这是我第一次尝试的结果
1.60827282342995E+40
8.04136411714975E+39
4.02068205857487E+39
2.01034102928744E+39
1.00517051464372E+39
5.02585257321859E+38
我希望得到没有格式化“E + XX”的结果,有没有办法记录整个数字来分析它的构成?
编辑:我写的脚本:Remove-Item "E:\syracuse.txt"
$Logfile = "E:\syracuse.txt"
Function LogWrite
{
Param ([string]$logstring)
Add-content $Logfile -value $logstring
}
$chiffre1 = 0
$chiffre2 = 0
$chiffre1 = read-host "chiffre"
write-host Sequence Initiale $chiffre1
$val = 0
while ($val -ne 32132135464664546546545645656454665412321321231321654657987465432132154)
{
$val++
if ([bool]!($chiffre1%2))
{
Write-Host "Pair"
$chiffre2=($chiffre1)/2
write-host $chiffre2
LogWrite $chiffre2,$val
}
Else
{
Write-Host "Impair"
$chiffre2 = $chiffre1*3+1
write-host $chiffre2
LogWrite $chiffre2,$val
}
if ([bool]!($chiffre2%2))
{
Write-Host "Pair"
$chiffre1=($chiffre2)/2
write-host $chiffre1
LogWrite $chiffre1,$val
}
Else
{
Write-Host "Impair"
$chiffre1 = $chiffre2*3+1
write-host $chiffre1
LogWrite $chiffre1,$val
}
}
$ val具有任意值
我只有Powershell 2.0,我现在正在更新到Powershell v3。
Edit2:现在非常奇怪。 在ISE中,脚本不起作用,每次都是奇数。
我想我在bigInt的帮助下找到了一个小解决方案 由于某些原因,它不适用于ISE,但它适用于Powershell v3 cmd。
我修改了我的LogWrite行:
LogWrite ([bigint]$chiffre1),$val
或
LogWrite ([bigint]$chiffre2),$val
我的日志现在格式正确!
答案 0 :(得分:4)
在PowerShell 3.0+中,您可以使用System.Numerics.BigInteger
data type来表示任意大的整数值:
PS C:\> 1e15
1E+15
PS C:\> 1e15 -as [System.Numerics.BigInteger]
1000000000000000
甚至还有一个内置式加速器([bigint]
):
PS C:\> [bigint]1e15
1000000000000000