自然常数E
自然常数,符号e,为数学中一个常数,是一个无限不循环小数,且为超越数,其值约为2.718281828459045。它是自然对数函数的底数。
我们打印表达式(1+1/x)的x次方的值以及获取第一次大于2.718的正整数
新建C#控制台应用程序NaturalConstantDemo,
测试程序如下:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NaturalConstantDemo
{
class Program
{
static void Main(string[] args)
{
/*
* 自然常数,符号e,为数学中一个常数,是一个无限不循环小数,且为超越数,其值约为2.718281828459045。它是自然对数函数的底数。
* 表达式(1+1/x)的x次方的极限就是E
*/
Console.SetWindowSize(120, 40);
Console.WriteLine("测试表达式(1+1/x)的x次方的极限【x为正整数】是否为自然常数E");
int N = 6000;
StringBuilder sb = new StringBuilder();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 1; i <= N; i++)
{
double currentValue = Math.Pow(1 + 1.0 / i, i);
sb.AppendLine($"当前数字【{i.ToString("D4")}】,值为【{currentValue}】");
if (i <= 20 || i % 100 == 0)
{
Console.WriteLine($"当前数字【{i.ToString("D4")}】,值为【{currentValue}】");
}
}
stopwatch.Stop();
Console.WriteLine($"耗时【{stopwatch.Elapsed}】");
stopwatch.Reset();
string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMdd") + ".txt");
File.WriteAllText(fileName, sb.ToString());
stopwatch.Start();
int number = GetFirstIndexGreatThanE();
stopwatch.Stop();
Console.WriteLine($"计算表达式(1+1/x)的x次方 第一次大于2.718的正整数X={number},耗时【{stopwatch.Elapsed}】,折算毫秒【{stopwatch.Elapsed.TotalMilliseconds}】ms");
Console.ReadLine();
}
/// <summary>
/// 找出 表达式(1+1/x)的x次方 第一次大于2.718的正整数x
/// </summary>
/// <returns></returns>
static int GetFirstIndexGreatThanE()
{
//截取E的前三位:2.718
double threeDigitNumber = Math.Round(Math.E, 3);//double.Parse(Math.E.ToString("F3"));
int number = 1;
while (Math.Pow(1 + 1.0 / number, number) < threeDigitNumber)
{
number++;
}
Console.WriteLine($"表达式(1+1/x)的x次方第一次大于【{threeDigitNumber}】的正整数X=【{number}】,值为【{Math.Pow(1 + 1.0 / number, number)}】");
return number;
}
}
}