vue实现在线进制转换功能
vue实现在线进制转换
主要功能包括:
1.支持2-36进制之间的转换。
2.支持整数和浮点数的转换。
3.输入验证(虽然可能存在不严格的情况)。
4.错误提示。
5.结果展示,包括大写字母。
6.用户友好的界面,包括下拉菜单、输入框、按钮和结果区域。
7.小数部分处理,限制精度为10位。
8.即时转换(通过按钮触发,而非实时响应)。
效果图:
step1:C:\Users\wangrusheng\PycharmProjects\untitled18\src\views\Home.vue
<template> <div class="converter-container"> <h1>在线进制转换</h1> <p class="description">支持在2~36进制之间进行任意转换,支持浮点型</p> <div class="converter-wrapper"> <div class="converter-row"> <div class="select-group"> <select v-model="fromBase" class="base-select"> <option v-for="n in bases" :value="n">{{ n }}进制</option> </select> </div> <div class="input-group"> <input type="text" v-model="inputNumber" placeholder="转换数字" class="number-input" > </div> </div> <div class="converter-row"> <div class="select-group"> <select v-model="toBase" class="base-select"> <option v-for="n in bases" :value="n">{{ n }}进制</option> </select> </div> <div class="result-group"> <div class="result-display">{{ result }}</div> </div> </div> </div> <button @click="convert" class="convert-btn">立即转换</button> </div> </template> <script setup> import { ref, computed } from 'vue' const fromBase = ref(16) const toBase = ref(10) const inputNumber = ref('3c') const result = ref('') const bases = Array.from({ length: 35 }, (_, i) => i + 2); // 生成 2 到 36 的进制数组 const convert = () => { try { // Handle empty input if (!inputNumber.value) { result.value = ''; return; } // Check if the input number is valid for the selected base const isValid = /^[0-9a-z.]+$/i.test(inputNumber.value); if (!isValid) { result.value = '输入包含无效字符'; return; } // Separate integer and fractional parts const [integerPartStr, fractionalPartStr = ''] = inputNumber.value.split('.'); // Convert integer part const integerPartDecimal = parseInt(integerPartStr, fromBase.value); if (isNaN(integerPartDecimal)) { result.value = '无效的输入数字'; return; } const integerPartResult = integerPartDecimal.toString(toBase.value).toUpperCase(); // Convert fractional part if it exists let fractionalPartResult = ''; if (fractionalPartStr) { let decimalFraction = 0; for (let i = 0; i < fractionalPartStr.length; i++) { const digit = parseInt(fractionalPartStr[i], fromBase.value); if (isNaN(digit) || digit >= fromBase.value) { result.value = '无效的小数部分'; return; } decimalFraction += digit * Math.pow(fromBase.value, -(i + 1)); } let tempFractionalResult = ''; let tempDecimal = decimalFraction; for (let i = 0; i < 10; i++) { // Limit precision to 10 digits tempDecimal *= toBase.value; const integerPart = Math.floor(tempDecimal); tempFractionalResult += integerPart.toString(toBase.value).toUpperCase(); tempDecimal -= integerPart; if (tempDecimal === 0) { break; } } fractionalPartResult = '.' + tempFractionalResult; } result.value = integerPartResult + fractionalPartResult; } catch (error) { result.value = '转换出错'; console.error("Conversion error:", error); } } </script> <style scoped> .converter-container { max-width: 600px; margin: 20px auto; padding: 20px; background: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } h1 { text-align: center; color: #333; margin-bottom: 10px; } .description { text-align: center; color: #666; margin-bottom: 30px; } .converter-wrapper { margin: 20px 0; } .converter-row { display: flex; gap: 10px; margin-bottom: 15px; } .select-group, .input-group, .result-group { flex: 1; } .base-select, .number-input { width: 100%; padding: 12px; border: 1px solid #fff; border-radius: 4px; font-size: 16px; } .result-display { padding: 12px; background: #f8f9fa; border: 1px solid #eee; border-radius: 4px; min-height: 46px; } .convert-btn { width: 100%; padding: 12px; background: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; transition: background 0.3s; } .convert-btn:hover { background: #0056b3; } </style>
您可能感兴趣的文章
- 07-22原生JS实现HTML转Markdown功能
- 07-22Vue中watchEffect的追踪逻辑介绍
- 07-22Vue实现版本检测与升级提示
- 07-22Vue中组件(Component)和插件(Plugin)的区别及说明
- 07-22vue中的data为什么是个函数而不是对象详解
- 07-22nvm安装指定版本node失败的解决方法
- 07-22Vue中v-model的使用示例详解
- 07-22Javascript中如何循环(常用方法推荐)
- 07-22如何解决前端使用Axios时的跨域问题
- 07-22JavaScript中常见的Polyfill示例详解


阅读排行
推荐教程
- 04-23JavaScript Array实例方法flat的实现
- 04-23Vue3使用v-if指令进行条件渲染的实例代码
- 04-23THREE.JS使用TransformControls对模型拖拽的代码实例
- 07-21JavaScript判断数据类型的四种方式总结
- 07-22JavaScript随机数生成各种技巧及实例代码
- 04-23vue3+ts项目搭建的实现示例
- 07-21JavaScript检查变量类型的常用方法
- 07-21基于vue3与supabase系统认证机制详解
- 07-22使用Node.js实现GitHub登录功能
- 07-21JavaScript双问号操作符(??)的惊人用法总结大全