2017-08-14 8 views
1

私は12345678.02を渡しています。小数点以下の値、つまり「02」を取得したいのですが、別のテキストファイルを置き換えたいと思います。小数点以下の値を取得するには

<add key="BuildVersion" value="12345678.01" /> 

by。

<add key="BuildVersion" value="12345678.02" /> 

私は蛇のコードを書いたが、いつも私はエコーがオフになる。

set/p pass="%pass%" 
set "number_to_round=%pass%" 
for /f "tokens=1,2 delims=." %%a in ("%number_to_round%") do (
    set first_part=%%a 
    set second_part=%%b 
) 
set second_part=%second_part:~0,1% 
echo %second_part% 
if defined second_part if %second_part% GEQ 5 ( 
    set /a rounded=%second_part%+1 
) else ( 
    set /a rounded=%second_part% 
) 
echo %rounded%>newVersionbeafterdecimal.txt 
+0

バッチが(時々符号付き32ビット整数に変換)のみ可変型ストリングを有します。フロートはありません。また、先行するゼオの数は8進数として解釈されます。どのようにして100を追加すると四捨五入が行われますか?あなたに何をしようとしているのかはわかりません。 – LotPings

+0

@LotPingsのI/Fのための溶液 セット/ Pパス= "%パス%" セット "number_to_round =%パス%" を得た "トークン= 1,2 delims ="。 %%で( "%のnumber_to_round%は")を行う( セットfirst_part = %% セットsecond_part = %% B ) セットsecond_part =%second_part:〜0,2% エコー%second_part% 定義さsecond_part場合( が設定されている場合は、最初の部分がになります) が設定されています. –

+1

コードにはコードを投稿しないでください。** IF **これはあなたの質問とは異なる[edit]質問。 – LotPings

答えて

0

小数部は常にそれがはるかに簡単だ2桁持っている場合:単に小数点を再挿入1と

  • によって小数点
  • 増分を削除

    1. を。

    @Echo off 
    set/p "pass=Version number %pass%" 
    If "%pass:~-3,1%" neq "." (Echo Invalid version number %pass% &Pause&Goto :Eof) 
    Echo pass=%pass% 
    Set /A pass=%pass:.=% + 1 
    Echo pass=%pass% 
    Set "pass=%pass:~0,-2%.%pass:~-2%" 
    Echo pass=%pass% 
    
    echo %pass%>newVersion.txt 
    

    エコーラインはhappingだし、除去することができるかを示すために挿入されています。

    サンプルラン:

    > SO_45668510.cmd 
    Version number 12345678.01 
    pass=12345678.01 
    pass=1234567802 
    pass=12345678.02 
    
  • 関連する問題