-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
executable file
·136 lines (99 loc) · 3.24 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import BigNumber from "./bignumber.mjs"
window.mudarLabel = function mudarLabel(){
var valor;
valor = document.getElementById("selectPrec").value;
if (valor == "porcentagem"){
var a;
a = document.getElementById("labelPrec");
a.innerHTML = "Porcentagem Mínima de Precisão: ";
}
else {
a = document.getElementById("labelPrec");
a.innerHTML = "Casas Decimais de Precisão: ";
}
}
window.teste = function teste(){
return 0;
}
function binFracParaDecimal(binFrac){
var i, deciValue = BigNumber(0);
for (i = 0; i < binFrac.length; i++){
deciValue = (deciValue.plus(BigNumber("0.5").pow(i+1).multipliedBy(binFrac.charAt(i))));
}
return deciValue;
}
function calcularPrecisaoPerc(numeroIncerto, numeroCorreto){
return (numeroIncerto.div(numeroCorreto)).multipliedBy(100);
}
function calcPorCasa(){
var deciNum, casasPrec;
var deciInt, deciFrac, deciFracTemp;
var binInt, binFrac;
// Entradas
deciNum = document.getElementById("deciInput").value;
casasPrec = document.getElementById("precision").value;
// Separando parte inteira de parte fracionária
deciInt = Math.trunc(deciNum);
if (!deciNum.includes(".")){
deciNum = deciNum + ".0";
}
deciFrac = '0.' + deciNum.split('.')[1]
// Convertendo parte inteira para binário
binInt = parseInt(deciInt).toString(2);
// convertendo parte fracionária para binário
deciFracTemp = BigNumber(deciFrac);
binFrac = "";
while (true){
if (deciFracTemp.gte(1)){
deciFracTemp = deciFracTemp.minus(1);
}
deciFracTemp = deciFracTemp.multipliedBy(2);
binFrac += Math.trunc(deciFracTemp);
if (binFrac.length == casasPrec){
break;
}
}
alert("Resultado..: " + binInt + "." + binFrac);
}
function calcPorPerc(){
var deciNum, percPrec;
var deciInt, deciFrac, deciFracTemp;
var binInt, binFrac;
var precisaoAtual;
// Entradas
deciNum = document.getElementById("deciInput").value;
percPrec = document.getElementById("precision").value;
// Separando parte inteira de parte fracionária
deciInt = Math.trunc(deciNum);
if (!deciNum.includes(".")){
deciNum = deciNum + ".0";
}
deciFrac = '0.' + deciNum.split('.')[1]
// Convertendo parte inteira para binário
binInt = parseInt(deciInt).toString(2);
// convertendo parte fracionária para binário
deciFracTemp = BigNumber(deciFrac);
binFrac = "";
while (true){
if (deciFracTemp.gte(1)){
deciFracTemp = deciFracTemp.minus(1);
}
deciFracTemp = deciFracTemp.multipliedBy(2);
binFrac += Math.trunc(deciFracTemp);
precisaoAtual = calcularPrecisaoPerc(binFracParaDecimal(binFrac), BigNumber(deciFrac));
if (precisaoAtual.gte(percPrec)){
break;
}
}
alert("Resultado..: " + binInt + "." + binFrac + " Com " + precisaoAtual + "% de precisão");
}
window.converterbtn = function converterbtn(){
var valor;
valor = document.getElementById("selectPrec").value;
if (valor == "porcentagem"){
calcPorPerc(); // Ainda não declarada
}
else {
calcPorCasa();
}
}