body {

font-family: "Microsoft YaHei", Arial, sans-serif;

//max-width: 600px;

margin: 0 auto;

padding: 20px;

background-color: #f9f9f9;

color: #333;

}

h1 {

color: #e74c3c;

text-align: center;

margin-bottom: 30px;

}

.converter {

background-color: white;

border-radius: 8px;

padding: 25px;

box-shadow: 0 2px 15px rgba(0, 0, 0, 0.1);

}

.input-group {

margin-bottom: 20px;

}

label {

display: block;

margin-bottom: 8px;

font-weight: bold;

color: #2c3e50;

}

input {

width: 100%;

padding: 12px;

border: 1px solid #ddd;

border-radius: 4px;

box-sizing: border-box;

font-size: 16px;

}

input:focus {

border-color: #3498db;

outline: none;

}

.button-group {

display: flex;

gap: 10px;

margin-bottom: 20px;

}

button {

background-color: #3498db;

color: white;

border: none;

padding: 12px 20px;

border-radius: 4px;

cursor: pointer;

font-size: 16px;

font-weight: bold;

transition: background-color 0.3s;

flex: 1;

}

button:hover {

background-color: #2980b9;

}

button.secondary {

background-color: #95a5a6;

}

button.secondary:hover {

background-color: #7f8c8d;

}

.result {

margin-top: 25px;

padding: 20px;

background-color: #f8f9fa;

border-radius: 4px;

border-left: 4px solid #3498db;

position: relative;

}

.result.show {

display: block;

}

.result-title {

color: #2c3e50;

margin-top: 0;

margin-bottom: 10px;

}

.result-content {

font-size: 18px;

color: #e74c3c;

font-weight: bold;

word-wrap: break-word;

margin-bottom: 15px;

}

.copy-btn {

background-color: #2ecc71;

padding: 8px 15px;

font-size: 14px;

}

.copy-btn:hover {

background-color: #27ae60;

}

.copy-feedback {

position: absolute;

right: 20px;

top: 20px;

background-color: #2ecc71;

color: white;

padding: 5px 10px;

border-radius: 4px;

font-size: 14px;

opacity: 0;

transition: opacity 0.3s;

}

.copy-feedback.show {

opacity: 1;

}

.error {

color: #e74c3c;

font-size: 14px;

margin-top: 5px;

display: none;

}

.example {

margin-top: 20px;

padding: 15px;

background-color: #f0f4f8;

border-radius: 4px;

font-size: 14px;

}

.example h4 {

margin-top: 0;

color: #2c3e50;

}

Convertidor de mayúsculas de importe

Ingrese el importe en minúsculas:

Convertir a mayúsculas Limpiar

Importe en mayúsculas:

Copiar resultado

¡Copiado!

Instrucciones de uso:

1. Ingrese el importe numérico (admite enteros y decimales, máximo dos decimales)

2. Soporta hasta el nivel de cien mil millones

3. Ejemplo: 1234.56 → 壹仟贰佰叁拾肆元伍角陆分

document.getElementById('convert').addEventListener('click', convertAmount);

document.getElementById('clear').addEventListener('click', clearAll);

document.getElementById('copy-btn').addEventListener('click', copyResult);

// Agregar tecla Enter para activar la conversión

document.getElementById('amount').addEventListener('keypress', function(e) {

if (e.key === 'Enter') {

convertAmount();

}

});

function convertAmount() {

const amountInput = document.getElementById('amount').value.trim();

const errorElement = document.getElementById('amount-error');

const resultElement = document.getElementById('result');

const resultContent = document.getElementById('result-content');

// Restablecer estado

errorElement.style.display = 'none';

resultElement.classList.remove('show');

// Validar entrada

if (!amountInput) {

showError('Por favor ingrese el importe');

return;

}

// Verificar si es un número válido

if (!/^\d+(\.\d{1,2})?$/.test(amountInput)) {

showError('Por favor ingrese un formato de importe válido (ej.: 1234.56)');

return;

}

// Convertir a número

const amount = parseFloat(amountInput);

// Verificar rango

if (amount >= 1000000000000) {

showError('Importe demasiado grande, máximo soportado hasta cien mil millones');

return;

}

if (amount < 0) {

showError('El importe no puede ser negativo');

return;

}

// Convertir a importe en mayúsculas

const upperAmount = convertToUpper(amount);

resultContent.textContent = upperAmount;

resultElement.classList.add('show');

}

function clearAll() {

document.getElementById('amount').value = '';

document.getElementById('amount-error').style.display = 'none';

document.getElementById('result').classList.remove('show');

}

function copyResult() {

const resultContent = document.getElementById('result-content');

if (resultContent.textContent) {

// Crear un elemento textarea temporal para copiar el texto

const textarea = document.createElement('textarea');

textarea.value = resultContent.textContent;

document.body.appendChild(textarea);

textarea.select();

try {

// Ejecutar comando de copia

const successful = document.execCommand('copy');

if (successful) {

showCopyFeedback();

}

} catch (err) {

// Si el método execCommand no está disponible, usar la API moderna Clipboard

navigator.clipboard.writeText(resultContent.textContent)

.then(() => showCopyFeedback())

.catch(err => console.error('Error al copiar:', err));

}

document.body.removeChild(textarea);

}

}

function showCopyFeedback() {

const feedback = document.getElementById('copy-feedback');

feedback.classList.add('show');

setTimeout(() => {

feedback.classList.remove('show');

}, 2000);

}

function showError(message) {

const errorElement = document.getElementById('amount-error');

errorElement.textContent = message;

errorElement.style.display = 'block';

}

function convertToUpper(n) {

// Mapeo de caracteres numéricos a mayúsculas chinas

const digits = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];

const units = ['', '拾', '佰', '仟'];

const bigUnits = ['', '万', '亿'];

// Procesar parte decimal

let integerPart = Math.floor(n);

let decimalPart = Math.round((n - integerPart) * 100);

// Procesar parte entera

let result = '';

if (integerPart > 0) {

let integerStr = integerPart.toString();

let zeroCount = 0;

// Procesar en grupos de 4 dígitos

for (let i = 0; i < integerStr.length; i++) {

const pos = integerStr.length - 1 - i;

const digit = parseInt(integerStr[pos]);

const unitPos = i % 4;

const groupPos = Math.floor(i / 4);

if (digit === 0) {

zeroCount++;

} else {

if (zeroCount > 0) {

result = digits[0] + result;

zeroCount = 0;

}

result = digits[digit] + units[unitPos] + result;

}

// Agregar unidad grande (万, 亿) al final de cada grupo

if (unitPos === 0 && zeroCount < 4) {

result = bigUnits[groupPos] + result;

}

}

result += '元';

} else {

result = '零元';

}

// Procesar parte decimal

if (decimalPart > 0) {

const jiao = Math.floor(decimalPart / 10);

const fen = decimalPart % 10;

if (jiao > 0) {

result += digits[jiao] + '角';

}

if (fen > 0) {

result += digits[fen] + '分';

}

} else if (decimalPart === 0 && integerPart > 0) {

result += '整';

} else {

result = '零元整';

}

// Manejo de casos especiales

result = result.replace(/零元/, '元');

result = result.replace(/零[拾佰仟]+/, '零');

result = result.replace(/零{2,}/g, '零');

result = result.replace(/零(万|亿)/g, '$1');

result = result.replace(/亿万/, '亿');

result = result.replace(/元零角/, '元');

return result;

}