📜 Verità Perdute (www.veritaperdute.it)

📄 Calc-rpn1-code.txt
<!DOCTYPE html> <html lang="it"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>RPN Scientific</title> <style> *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent} html,body{height:100%;background:#0d1117;font-family:'Consolas','Courier New',monospace;color:#e6edf3;user-select:none;-webkit-user-select:none;overflow:hidden} body{display:flex;justify-content:center;align-items:flex-start;padding:8px} .calc{background:#161b22;border-radius:14px;padding:12px;width:100%;max-width:400px;box-shadow:0 4px 24px rgba(0,0,0,.5)} .hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px} .ttl{font-size:13px;color:#6e7681;letter-spacing:2px} .mds{display:flex;gap:1px;background:#21262d;border-radius:5px;padding:2px} .mb{padding:3px 8px;font-size:11px;font-weight:bold;border:none;border-radius:3px;cursor:pointer;background:transparent;color:#6e7681;font-family:inherit} .mb.a{background:#d29922;color:#0d1117} .dsp{background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:10px 14px;margin-bottom:10px} .sl{display:flex;justify-content:space-between;align-items:baseline;height:26px;line-height:26px} .lb{font-size:12px;color:#484f58;width:24px} .lb.x{color:#7ee787} .sv{font-size:16px;color:#8b949e;text-align:right;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .sv.x{color:#ffd700;font-size:18px} .g{display:grid;grid-template-columns:repeat(5,1fr);gap:5px} .b{border:none;border-radius:7px;padding:12px 2px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;color:#c9d1d9;background:#2d333b;transition:transform .05s;touch-action:manipulation} .b:active{transform:scale(.94);filter:brightness(1.2)} .b.n{background:#3d444d;font-size:17px;color:#e6edf3} .b.o{background:#6b5b1a;color:#ffd700;font-size:17px} .b.e{background:#196c2e;color:#7ee787;font-size:14px;font-weight:bold} .b.d{background:#5c2020;color:#f47067} .b.s{background:#1a4040;color:#3dd6d6} .b.c{color:#d2a8ff} </style> </head> <body> <div class="calc"> <div class="hdr"> <span class="ttl">RPN SCIENTIFIC</span> <div class="mds"> <button class="mb a" id="mDEG" onclick="setA('DEG')">DEG</button> <button class="mb" id="mRAD" onclick="setA('RAD')">RAD</button> <button class="mb" id="mGRA" onclick="setA('GRA')">GRA</button> </div> </div> <div class="dsp"> <div class="sl"><span class="lb">4 :</span><span class="sv" id="r4">0</span></div> <div class="sl"><span class="lb">3 :</span><span class="sv" id="r3">0</span></div> <div class="sl"><span class="lb">2 :</span><span class="sv" id="r2">0</span></div> <div class="sl"><span class="lb x">1 :</span><span class="sv x" id="r1">0</span></div> </div> <div class="g"> <button class="b" onclick="uT(Math.sin)">SIN</button> <button class="b" onclick="uT(Math.cos)">COS</button> <button class="b" onclick="uT(Math.tan)">TAN</button> <button class="b" onclick="uF(Math.sqrt)">√x</button> <button class="b" onclick="uF(x=>x*x)">x²</button> <button class="b" onclick="uI(Math.asin)">SIN⁻¹</button> <button class="b" onclick="uI(Math.acos)">COS⁻¹</button> <button class="b" onclick="uI(Math.atan)">TAN⁻¹</button> <button class="b" onclick="bF(Math.pow)">yˣ</button> <button class="b" onclick="uF(x=>1/x)">1/x</button> <button class="b" onclick="uF(Math.log)">LN</button> <button class="b" onclick="uF(Math.log10)">LOG</button> <button class="b" onclick="uF(Math.exp)">eˣ</button> <button class="b" onclick="uF(x=>Math.pow(10,x))">10ˣ</button> <button class="b" onclick="nFact()">N!</button> <button class="b c" onclick="pC(Math.PI)">π</button> <button class="b c" onclick="pC(Math.E)">e</button> <button class="b" onclick="rnd()">RND</button> <button class="b" onclick="eex()">EEX</button> <button class="b" onclick="chs()">+/−</button> <button class="b n" onclick="dg('7')">7</button> <button class="b n" onclick="dg('8')">8</button> <button class="b n" onclick="dg('9')">9</button> <button class="b o" onclick="bF((a,b)=>a/b)">÷</button> <button class="b d" onclick="bks()">⌫</button> <button class="b n" onclick="dg('4')">4</button> <button class="b n" onclick="dg('5')">5</button> <button class="b n" onclick="dg('6')">6</button> <button class="b o" onclick="bF((a,b)=>a*b)">×</button> <button class="b d" onclick="clx()">CLx</button> <button class="b n" onclick="dg('1')">1</button> <button class="b n" onclick="dg('2')">2</button> <button class="b n" onclick="dg('3')">3</button> <button class="b o" onclick="bF((a,b)=>a-b)">−</button> <button class="b s" onclick="sw()">SWAP</button> <button class="b n" onclick="dg('0')">0</button> <button class="b n" onclick="dt()">.</button> <button class="b e" onclick="en()">ENTER</button> <button class="b o" onclick="bF((a,b)=>a+b)">+</button> <button class="b s" onclick="dr()">DROP</button> </div> </div> <script> const P=12; let S=[0,0,0,0],buf="",inp=false,lf=true,ex=false,exp="",ang="DEG"; function fmt(n){ if(typeof n!=='number'||isNaN(n))return"Error"; if(!isFinite(n))return n>0?"∞":"-∞"; if(n===0)return"0"; let a=Math.abs(n),s; if(a>=1e-4&&a<1e12){ s=n.toPrecision(P); if(s.includes('.')&&!s.includes('e'))s=s.replace(/0+$/,'').replace(/\.$/,''); }else{ s=n.toExponential(P-1); let p=s.split('e'); if(p[0].includes('.'))p[0]=p[0].replace(/0+$/,'').replace(/\.$/,''); s=p[0]+'e'+p[1]; } return s; } function upd(){ let x; if(inp){x=ex?(buf||"0")+"e"+(exp||""):(buf||"0");} else{x=fmt(S[0]);} document.getElementById('r1').textContent=x; document.getElementById('r2').textContent=fmt(S[1]); document.getElementById('r3').textContent=fmt(S[2]); document.getElementById('r4').textContent=fmt(S[3]); } function fin(){ if(inp){ let v; if(ex)v=parseFloat((buf||"0")+"e"+(exp||"0")); else v=parseFloat(buf||"0"); S[0]=isNaN(v)?0:v;inp=false;ex=false;exp="";buf=""; } } function li(){S[3]=S[2];S[2]=S[1];S[1]=S[0];} function dp(){S[0]=S[1];S[1]=S[2];S[2]=S[3];} function r12(v){return(!isFinite(v)||v===0)?v:parseFloat(v.toPrecision(P));} function toR(x){return ang==="DEG"?x*Math.PI/180:ang==="GRA"?x*Math.PI/200:x;} function frR(x){return ang==="DEG"?x*180/Math.PI:ang==="GRA"?x*200/Math.PI:x;} function dg(d){ if(!inp){if(lf)li();buf="";ex=false;exp="";inp=true;} if(ex){if(exp.replace('-','').length<3)exp+=d;} else{if(buf==="0")buf=d;else if(buf==="-0")buf="-"+d;else buf+=d;} let v;if(ex)v=parseFloat((buf||"0")+"e"+(exp||"0"));else v=parseFloat(buf||"0"); if(!isNaN(v))S[0]=v;lf=true;upd(); } function dt(){ if(!inp){if(lf)li();buf="0";inp=true;} if(!ex&&!buf.includes('.'))buf+='.';upd(); } function en(){fin();li();lf=false;upd();} function bks(){ if(inp){ if(ex){if(exp.length>0)exp=exp.slice(0,-1);else ex=false;} else{buf=buf.slice(0,-1);if(!buf||buf==="-")buf="0";} let v;if(ex)v=parseFloat((buf||"0")+"e"+(exp||"0"));else v=parseFloat(buf||"0"); if(!isNaN(v))S[0]=v;upd(); } } function clx(){S[0]=0;inp=false;buf="";ex=false;exp="";lf=false;upd();} function sw(){fin();let t=S[0];S[0]=S[1];S[1]=t;lf=true;upd();} function dr(){fin();dp();lf=true;upd();} function chs(){ if(inp){ if(ex){exp=exp.startsWith('-')?exp.slice(1):'-'+exp;} else{buf=buf.startsWith('-')?buf.slice(1):'-'+buf;} let v;if(ex)v=parseFloat((buf||"0")+"e"+(exp||"0"));else v=parseFloat(buf||"0"); if(!isNaN(v))S[0]=v;upd(); }else{S[0]=-S[0];lf=true;upd();} } function eex(){ if(!inp){if(lf)li();buf="1";inp=true;} if(!ex){ex=true;exp="";}upd(); } function uF(fn){fin();S[0]=r12(fn(S[0]));lf=true;upd();} function uT(fn){fin();S[0]=r12(fn(toR(S[0])));lf=true;upd();} function uI(fn){fin();S[0]=r12(frR(fn(S[0])));lf=true;upd();} function bF(fn){ fin();let x=S[0],y=S[1]; S[0]=r12(fn(y,x));S[1]=S[2];S[2]=S[3];lf=true;upd(); } function nFact(){ fin();let n=Math.round(S[0]); if(n<0||n>170){S[0]=NaN;} else{let r=1;for(let i=2;i<=n;i++)r*=i;S[0]=r;} lf=true;upd(); } function rnd(){fin();S[0]=Math.round(S[0]);lf=true;upd();} function pC(c){fin();if(lf)li();S[0]=c;lf=true;upd();} function setA(m){ ang=m;document.querySelectorAll('.mb').forEach(b=>b.classList.remove('a')); document.getElementById('m'+m).classList.add('a'); } document.addEventListener('keydown',function(e){ let k=e.key; if(k>='0'&&k<='9'){dg(k);e.preventDefault();} else if(k==='.'){dt();e.preventDefault();} else if(k==='Enter'){en();e.preventDefault();} else if(k==='+'){bF((a,b)=>a+b);e.preventDefault();} else if(k==='-'){bF((a,b)=>a-b);e.preventDefault();} else if(k==='*'){bF((a,b)=>a*b);e.preventDefault();} else if(k==='/'){bF((a,b)=>a/b);e.preventDefault();} else if(k==='Backspace'){bks();e.preventDefault();} else if(k==='Escape'||k==='Delete'){clx();e.preventDefault();} }); upd(); </script> </body> </html>
← Indietro ⬇ Scarica
® Ricerca indipendente di monseppe2