AMcoder - javascript, python, java, html, php, sql

Ինչպե՞ս հաշվարկել օգտակար վերին և ստորին սահմանները կրկնակի արժեքի համար:

Այս պահին ես իրական ժամանակի աղյուսակ եմ կառուցում: Տվյալները, որոնք հոսում են WebSockets-ի միջոցով, հիմնականում բաղկացած են պարզ ժամանակացույցի/արժեքի զույգերից և գծվում են ժամանակի վրա հիմնված գծային գծապատկերում: Հիմա ես հանդիպեցի մի խնդրի և մտածում եմ, թե որն է լինելու ամենակայուն և էլեգանտ միջոցը.

Գծապատկերի Y-ի մասշտաբավորումը պետք է դինամիկ լինի, հետևաբար ես պետք է մշտապես հետևեմ տեսանելի տվյալների նվազագույն/մաքս արժեքներին: Այս մասը հեշտ է, քանի որ դուք պարզապես պետք է ստանաք min/max արժեքները տվյալների զանգվածից և դրանք սահմանեք որպես գծապատկերների ստորին և վերին սահմաններ:

Այժմ ես ուզում էի այս սահմանային արժեքներին մի քանի լիցք ավելացնել՝ գեղեցիկ և կլոր սահմանային արժեքներ ստանալու համար: Օրինակ, եթե տվյալ տիրույթում առավելագույն արժեքը, ասենք, 24.7 է, ես ուզում եմ, որ վերին սահմանը լինի 30: Ինձ անհրաժեշտ է մեկ պարամետրով ֆունկցիա, որը դուրս է բերում հաջորդ վերին «գեղեցիկ» արժեքը: Ահա մի քանի օրինակներ.

     0.13  -->      1
    97.2   -->    100
    17.08  -->     20
   768     -->    800
    -3.4   -->      0
116843     --> 200000
     0.003 -->      0.01

Կա՞ մաթեմատիկական ֆունկցիա, որը ես կարող եմ օգտագործել: Ինձ հաստատ ինչ-որ կայուն բան է պետք, բայց դրան հասնելու ոչ մի ճանապարհ չեմ տեսնում՝ չսկսելով թվերը հաշվել և վերլուծել առաջին թվանշանը և այլն, ինչը շատ տգեղ կլիներ:

Շնորհակալություն նախօրոք ձեր օգնության համար:

Հարգանքներով, Ռոբ

Հ.Գ. Ես խոսել եմ վերին սահմանի արժեքը ստանալու մասին, ինձ նաև անհրաժեշտ է ֆունկցիա ստորին սահմանի համար, իհարկե, բայց ես ենթադրում եմ, որ կարող եմ դա բխել վերին սահմանի ֆունկցիայից, երբ մենք լուծում գտնենք:

22.08.2013

  • Ոչ, դրա համար ստանդարտ մաթեմատիկական ֆունկցիա չկա: 116,843-ի դեպքում, ի՞նչն է 200,000-ն ավելի գեղեցիկ, քան 120,000-ը: 22.08.2013
  • Դե, ճաշակի հարց է։ ;-) Հիմնականում, բնական լեզվով, 0-ից բարձր արժեքների համար այն պետք է միշտ մեծացնի առաջին թվանշանի արժեքը մեկով, իսկ մնացած թվանշանները սահմանի 0: Բայց ես ուզում եմ դա անել առանց խառնվելու .toString() և այլն: . 22.08.2013
  • Կարծում եմ, որ թվային ալգորիթմները նույնպես խառնաշփոթ կլինեն, քանի որ դուք պետք է օգտագործեք բազային 10 լոգարիթմներ՝ ամենակարևոր թվանշանը գտնելու համար, այնուհետև դուք կբախվեք լողացող կետի մոտարկումների: 22.08.2013
  • Առաջարկեք հետևյալը որպես ավելի համահունչ 0,13 --› 0,2, -3,4 --› -3 և 0,003 --› 0,003: 22.08.2013

Պատասխանները:


1

Դուք կարող եք վերցնել սա (եթե աշխատի ձեր նպատակի համար).

function ext_ceil(val){
   if(val < 0)
       return 0;

   var str = val + '';
   var arr = str.split('.');
   var digitsLength = arr[0].length;

   var divisor = 1;
   if(val > 10){

       for(var i=0;i<(digitsLength-1);i++){
           divisor *= 10;
           console.log(divisor);
       }
       val = val / divisor;
       console.log(val);
   }

   val = Math.ceil(val);
   val *= divisor;
   return val;
};

եթե ցանկանում եք փորձել այս ալգորիթմը, օգտագործեք my jsFiddle

22.08.2013
  • Շնորհակալություն ձեր պատասխանի համար: Ձեր ֆունկցիան ներկայումս աշխատում է ›= 1 արժեքների համար, բայց ես կտեսնեմ, թե արդյոք կարող եմ այն ​​ընդլայնել 0,04 --› 0,1 և բացասական արժեքների համար: 22.08.2013
  • Այո դու ճիշտ ես. Իմ սխալը. բայց սա հեշտությամբ կարող է շտկվել մեկ այլ if statement-ով 0,1-ից ցածր արժեքների համար, դուք պետք է գտնեք բազմապատկիչը և բազմապատկեք -› առաստաղ -› բաժանումը: Բացասական արժեքների համար, որոնք դուք տեղադրել եք ձեր օրինակներում, որ -3.4-ը պետք է լինի 0: Ես հասկացա, որ բացասական արժեքները պետք է հանգեցնեն 0-ի: 22.08.2013
  • Կներեք, ես այս հարցում ճշգրիտ չեմ եղել. բացասական արժեքները պետք է նույն կերպ վարվեն, որպեսզի՝ -17,72 --› -10 և -0,34 --› -0,3: Բայց ես կկարողանամ սա գործարկել ձեր կոդի հիման վրա: Ես շուտով կհրապարակեմ իմ լուծումը: Միևնույն ժամանակ, ես իսկապես ոգևորված եմ տեսնելու, թե արդյոք որոշ մաթեմատիկական ճեղքեր կգտնեն լրացուցիչ կախարդանք :-) 22.08.2013
  • Լավ. Շնորհակալություն։ Ինձ շատ կհետաքրքրի ամբողջական գործառույթը ;) (Ավելացրե՛ք սա որպես ֆավորիտ) 22.08.2013
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..