讓代碼帶你飛:去第二個地球要飛多久

NASA的飛船飛了9年、走了48億千米終於拍到了冥王星送給咱們的表明愛的心形,表達本身但願脫離單身狗命運的願望。html

 

幾乎在同時,三里屯的一對情侶用了1月10秒進行高頻率「0釐米、-10釐米、0釐米、-10釐米」身體距離的循環,用一首「優衣庫裏脫衣褲,一庫一庫」的史詩向冥王星致敬。java

 

在單身狗還沒從這樣的被虐循環打擊中緩過神來,9天后,NASA這個小賤人又發佈了「咱們發現了‘第二個地球’」的消息。地球這個球貨也找到了另一個「二球」,並且還比地球大60%!居然比球貨還大!程序員

 

 

  慢着!既然有「第二個地球」,我在這個地球上找不到個人「小公舉」,那我是否是在「第二個地球」上找到個人「小公舉」呢!編程

 

她必定美的讓人窒息!c#

 

 

 

 

說到就要能作到api

我去車站買車票數組

票員問我去哪裏編程語言

我說「去 開普勒-452b 西站,有沒有票?」ide

 

 

 

   

   好吧,此處不留爺自有留爺處,到處不留爺,我去優衣庫……說錯了!到處不留爺,我去停車庫!spa

 

 

 

那麼問題來了!已知以下條件:

1)如鵬網辦公地址是北京市昌平區珠江摩爾國際中心

2)珠江摩爾在京藏高速北安河出口

3)高速收費站收費員的QQ號是10001

4)這個QQ號被一個叫馬化騰的盜走了

 

   求如鵬網辦公室開車到「開普勒-452b 西站」要用幾個小時。

 

 

 

    距離1400光年,個人車是「保時捷 6 Plus版」,車速200千米/小時。

  

 解:

1)咱們知道(愛誰知道誰知道),光一秒走300000千米,一年是60*60*24*365秒,所以光一年走300000*60*60*24*365千米。

2)1400光年就是1400*300000*60*60*24*365千米

3)個人「保時捷 6 Plus版」200千米/小時,所以只要1400*300000*60*60*24*365/200小時就能夠到了。

 

1400*300000*60*60*24*365/200是多少小時呢?我是程序員,偉大的軟件攻城獅,我要用寫代碼來算!

 

Java代碼:

int hours = 1400*300000*60*60*24*365/200;
System.out.println("你piapia的飛,只要"+hours+"小時就能夠和本身的女神papapa了");

 

運行結果是

 

   你妹呀,什麼破電腦呀!怎麼算出負數來了呀!

blob.png

 

 

 

 

由於int是用32位表示的,最大值是2147483647,超過他的數就會發生溢出。

 

聰明的如鵬網小鵬友可能會想到「用long,它比int範圍更大」,可是long的範圍也是有限的,進行天文級的運算,long也「浪不起來」了。

若是要想表示超級大的數,就不能用int、long等原始數據類型,要本身用byte數組模擬表示數組,而後本身實現四則運算。有的編程語言類庫中內置了超級大的類,省的本身去寫了,好比Java、.Net中都有BigInteger類。

 

下面是在Java中用BigInteger算去找「二球」用的時間

int 一年的秒數  =  60*60*24*365;
BigInteger  一光年的千米數 = new BigInteger("300000").multiply(new BigInteger(String.valueOf(一年的秒數)));
BigInteger 距離二球的千米數 = 一光年的千米數.multiply(new BigInteger("1400"));
System.out.println("您距離二球只有:"+距離二球的千米數+"千米");
BigInteger hours = 距離二球的千米數.divide(new BigInteger("200"));
System.out.println("你piapia的飛,只要"+hours+"小時就能夠和本身的女神papapa了");

啓動運行,秒算得出結果:你piapia的飛,只要66225600000000小時就能夠和本身的女神papapa了。

66225600000000小時是多少年呢?

int 一年的小時數  = 365*24; 
BigInteger years = hours.divide(new BigInteger(String.valueOf(一年的小時數)));
System.out.println("只有"+years+"年哦");

  

   運行之:只有7560000000年哦

     就也是隻要短短75.6億年嘛!

 

 

附錄:C#/.Net版代碼

using System;
using System.Numerics;//須要添加對System.Numerics.dll程序集的引用
 
namespace 如鵬網Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            int 一年的秒數  =  60*60*24*365;
            BigInteger 一光年的千米數 = new BigInteger(一年的秒數) * 300000;
            BigInteger 距離二球的千米數 = 一光年的千米數 * 1400;
    Console.WriteLine("您距離二球只有:"+距離二球的千米數+"千米");
            BigInteger hours = 距離二球的千米數 / 200;
    Console.WriteLine("你piapia的飛,只要"+hours+"小時就能夠和本身的女神papapa了");
    int 一年的小時數  = 365*24; 
    BigInteger years = hours/new BigInteger(一年的小時數);
            Console.WriteLine("只有" + years + "年哦");
            Console.ReadKey();
        }
    }
}

 

由於C#有運算符重載,寫出來的代碼比Java簡單太多、優美太多了!

 

打個廣告: 

騷氣十足的如鵬網招募以下崗位,歡迎加入:

一、IOS學科教學合夥人、講師

二、Android講師

三、.Net開發工程師

四、網頁設計師

 

崗位JD詳見:http://www.rupeng.com/joinus.shtml   

聯繫郵箱:yzk@rupeng.com

相關文章
相關標籤/搜索