vue實(shí)現(xiàn)在線進(jìn)制轉(zhuǎn)換功能
vue實(shí)現(xiàn)在線進(jìn)制轉(zhuǎn)換
主要功能包括:
1.支持2-36進(jìn)制之間的轉(zhuǎn)換。
2.支持整數(shù)和浮點(diǎn)數(shù)的轉(zhuǎn)換。
3.輸入驗(yàn)證(雖然可能存在不嚴(yán)格的情況)。
4.錯(cuò)誤提示。
5.結(jié)果展示,包括大寫字母。
6.用戶友好的界面,包括下拉菜單、輸入框、按鈕和結(jié)果區(qū)域。
7.小數(shù)部分處理,限制精度為10位。
8.即時(shí)轉(zhuǎn)換(通過按鈕觸發(fā),而非實(shí)時(shí)響應(yīng))。
效果圖:
step1:C:\Users\wangrusheng\PycharmProjects\untitled18\src\views\Home.vue
<template> <div class="converter-container"> <h1>在線進(jìn)制轉(zhuǎn)換</h1> <p class="description">支持在2~36進(jìn)制之間進(jìn)行任意轉(zhuǎn)換,支持浮點(diǎn)型</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 }}進(jìn)制</option> </select> </div> <div class="input-group"> <input type="text" v-model="inputNumber" placeholder="轉(zhuǎn)換數(shù)字" 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 }}進(jìn)制</option> </select> </div> <div class="result-group"> <div class="result-display">{{ result }}</div> </div> </div> </div> <button @click="convert" class="convert-btn">立即轉(zhuǎn)換</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 的進(jìn)制數(shù)組 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 = '無效的輸入數(shù)字'; 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 = '無效的小數(shù)部分'; 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 = '轉(zhuǎn)換出錯(cuò)'; 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>
到此這篇關(guān)于vue實(shí)現(xiàn)在線進(jìn)制轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)vue在線進(jìn)制轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue前端數(shù)值轉(zhuǎn)換為千分位格式并保留兩位小數(shù)代碼示例
- vue各種時(shí)間類型轉(zhuǎn)換方法例子
- vue如何轉(zhuǎn)換時(shí)間格式為年月日時(shí)分秒和年月日(補(bǔ)零)
- Vue JS對(duì)URL網(wǎng)址進(jìn)行編碼解碼,轉(zhuǎn)換為對(duì)象方式
- vue實(shí)現(xiàn)將時(shí)間戳轉(zhuǎn)換成日期格式
- Vue如何將時(shí)間戳轉(zhuǎn)換日期格式
- vue之字符串、數(shù)組之間的相互轉(zhuǎn)換方式
- Vue中Number方法將字符串轉(zhuǎn)換為數(shù)字的過程
相關(guān)文章
手把手教你如何將html模板資源轉(zhuǎn)為vuecli項(xiàng)目
Vue可以直接集成html,Vue就是前端框架,使用Vue做前端開發(fā)效率非常高,下面這篇文章主要給大家介紹了關(guān)于如何將html模板資源轉(zhuǎn)為vuecli項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-04-04el-tree樹組件懶加載(后端上千條數(shù)據(jù)前端進(jìn)行處理)
本文主要介紹了el-tree樹組件懶加載(后端上千條數(shù)據(jù)前端進(jìn)行處理),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Vue中狀態(tài)管理器(vuex)詳解以及實(shí)際應(yīng)用場景
Vuex是一個(gè)專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,下面這篇文章主要給大家介紹了關(guān)于Vue中狀態(tài)管理器(vuex)詳解以及實(shí)際應(yīng)用場景的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11Vue源碼解析之?dāng)?shù)組變異的實(shí)現(xiàn)
這篇文章主要介紹了Vue源碼解析之?dāng)?shù)組變異的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12使用idea創(chuàng)建第一個(gè)Vue項(xiàng)目
最近在學(xué)習(xí)vue,本文主要介紹了使用idea創(chuàng)建第一個(gè)Vue項(xiàng)目,文中根據(jù)圖文介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子
今天小編就為大家分享一篇在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11vue之?dāng)?shù)據(jù)交互實(shí)例代碼
本篇文章主要介紹了vue之?dāng)?shù)據(jù)交互實(shí)例代碼,vue中也存在像ajax和jsonp的數(shù)據(jù)交互,實(shí)現(xiàn)向服務(wù)器獲取數(shù)據(jù),有興趣的可以了解一下2017-06-06vue3中reactive和ref函數(shù)及對(duì)比分析
這篇文章主要介紹了vue3中reactive和ref函數(shù)及對(duì)比,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01